十六进制字符串转整型数组

3

我遇到了一个问题,就是如何将十六进制字符串转换成无符号字节数组或整数数组。

请看这个例子。

String s= "1f5621ff8963545a12152250"; //this is my hex string

我想将这个字符串转换为整型数组。
int buff[]={0x1f,0x56,0x21,0xff,0x89,0x63,0x54,0x5a,0x12,0x15,0x22,0x50};

我该如何做到这一点...

感谢您的帮助。


1
你尝试了什么?在您的示例中,似乎可以将s每2个字符拆分并在其前面添加0x - Marcelo
2个回答

4

一种简单的方法:通过将 String 的长度除以 2 计算出您的 int 数组的长度。循环遍历字符串,调用 substring() 创建两个字符的字符串 "1f"、"56" 等。将每个字符串传递给 Integer.parseInt(string, 16)(第二个参数表示该参数是一个十六进制字符串)。在计算结果时将其存储到数组中。


如果我执行 Integer.parseInt("1f", 16),它会编译为 31 ... 而不是 0x1f。 - Shantanu Banerjee
在内部只有一种方式来存储 int;十进制或十六进制(或八进制或其他)数字的表示仅在输出时发生。如果您想以十六进制打印 int,那么您必须明确使用 NumberFormatprintf() 或简单地使用 Integer.toString(int, 16) 来显示它。 - Ernest Friedman-Hill

0

遍历字符串,每两个元素创建一个整数,格式如下:

0Xmm,其中mm是你刚才扫描的两个元素。

然后增加数组的索引,并继续遍历字符串并添加到数组的当前“顶部”位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接