如何把输入的String类型转换为16进制类型
我现在构造一个ICMP包出了问题,我的设想是界面输入MAC地址然后转化为16进制数据,但是总是不行,请求达人给出解决办法,现在写出部分代码:我通过publicvoidse...
我现在构造一个ICMP包出了问题,我的设想是界面输入MAC地址然后转化为16进制数据,但是总是不行,请求达人给出解决办法,现在写出部分代码:
我通过public void sendICMP(String sourceIP, String destinationIP, String sourceMAC, String destinationMAC) throws java.io.IOException
传入在界面输入的MAC地址,然后在ether.src_mac=new byte[]{};中使用他,直接在程序写入MAC地址的代码是ether.src_mac=new byte[]{(byte)0x00,(byte)0x16,(byte)0x32,(byte)0x2D,(byte)0xE1,(byte)0x02};,我想请问我怎么改才合适呢?谢谢 展开
我通过public void sendICMP(String sourceIP, String destinationIP, String sourceMAC, String destinationMAC) throws java.io.IOException
传入在界面输入的MAC地址,然后在ether.src_mac=new byte[]{};中使用他,直接在程序写入MAC地址的代码是ether.src_mac=new byte[]{(byte)0x00,(byte)0x16,(byte)0x32,(byte)0x2D,(byte)0xE1,(byte)0x02};,我想请问我怎么改才合适呢?谢谢 展开
5个回答
2015-08-01 · 知道合伙人互联网行家
关注
展开全部
首先,将 string 分析为字符数组, 然后对每个字符调用 ToInt32(Char) 以获取相应的数字值。 最后,在 string 中将数字的格式设置为十六进制表示形式。
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
// Get the integral value of the character.
int value = Convert.ToInt32(letter);
// Convert the decimal value to a hexadecimal value in string form.
string hexOutput = String.Format("{0:X}", value);
Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}
/* Output:
Hexadecimal value of H is 48
Hexadecimal value of e is 65
Hexadecimal value of l is 6C
Hexadecimal value of l is 6C
Hexadecimal value of o is 6F
Hexadecimal value of is 20
Hexadecimal value of W is 57
Hexadecimal value of o is 6F
Hexadecimal value of r is 72
Hexadecimal value of l is 6C
Hexadecimal value of d is 64
Hexadecimal value of ! is 21
*/
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
// Get the integral value of the character.
int value = Convert.ToInt32(letter);
// Convert the decimal value to a hexadecimal value in string form.
string hexOutput = String.Format("{0:X}", value);
Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}
/* Output:
Hexadecimal value of H is 48
Hexadecimal value of e is 65
Hexadecimal value of l is 6C
Hexadecimal value of l is 6C
Hexadecimal value of o is 6F
Hexadecimal value of is 20
Hexadecimal value of W is 57
Hexadecimal value of o is 6F
Hexadecimal value of r is 72
Hexadecimal value of l is 6C
Hexadecimal value of d is 64
Hexadecimal value of ! is 21
*/
展开全部
public class java.lang.Integer 中如下方法
public static Integer decode(String nm)
throws NumberFormatException
将 String 解码为 Integer。接受通过以下语法给出的十进制、十六进制和八进制数字:
DecodableString:
Signopt DecimalNumeral
Signopt 0x HexDigits
Signopt 0X HexDigits
Signopt # HexDigits
Signopt 0 OctalDigits
Sign:
-
Java Language Specification 的第 §3.10.1 节中有 DecimalNumeral、HexDigits 和 OctalDigits 的定义。
跟在(可选)负号和/或基数说明符(“0x”、“0X”、“#”或前导零)后面的字符序列是使用指示的基数(10、16 或 8)通过 Integer.parseInt 方法解析的。字符序列必须表示一个正值,否则会抛出 NumberFormatException。如果指定的 String 的第一个字符是减号,则对结果求反。String 中不允许出现空白字符。
参数:
nm - 要解码的 String。
返回:
保存 nm 所表示的 int 值的 Integer 对象。
抛出:
NumberFormatException - 如果 String 不包含可解析整数。
从以下版本开始:
1.2
public static Integer decode(String nm)
throws NumberFormatException
将 String 解码为 Integer。接受通过以下语法给出的十进制、十六进制和八进制数字:
DecodableString:
Signopt DecimalNumeral
Signopt 0x HexDigits
Signopt 0X HexDigits
Signopt # HexDigits
Signopt 0 OctalDigits
Sign:
-
Java Language Specification 的第 §3.10.1 节中有 DecimalNumeral、HexDigits 和 OctalDigits 的定义。
跟在(可选)负号和/或基数说明符(“0x”、“0X”、“#”或前导零)后面的字符序列是使用指示的基数(10、16 或 8)通过 Integer.parseInt 方法解析的。字符序列必须表示一个正值,否则会抛出 NumberFormatException。如果指定的 String 的第一个字符是减号,则对结果求反。String 中不允许出现空白字符。
参数:
nm - 要解码的 String。
返回:
保存 nm 所表示的 int 值的 Integer 对象。
抛出:
NumberFormatException - 如果 String 不包含可解析整数。
从以下版本开始:
1.2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static String bin2hex(String bin) {
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
return sb.toString();
}
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
return sb.toString();
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有点不明白你的意思,
你是想将输入的字符串变成byte数组吗?数组中都是16进制数?
你是想将输入的字符串变成byte数组吗?数组中都是16进制数?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂........
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询