我想将整数转换为十六进制值,我只能将其存储在字节数组中作为十六进制值。
例如, int i = 18254; 十六进制等效值是474E(使用Integer.toHexString)。 现在我想把这个474E存储在一个字节数组中 字节[0] =(字节)0X47 字节[1] =(字节)0x4E 我怎么能这样做?
答案 0 :(得分:0)
我只是存储整数和数组,并使用蒙版转换为十六进制并根据需要进行移位。
e.g。 int = i & 0x00ff
中的最低字节,下一个最高= (i & 0xff00) >> 8
。
您可以使用这些相同的位操作来存储您请求的字节。
(i & 0xff00)
获得int中第二低的字节。 >> 8
将其右移8位,因此它现在存储在低8位中。
(i & 0xff0000)
为您提供第3个字节(您必须向右移16位),依此类推。
这样:
lowerByte = intVal & 0x000000ff;
secondLowest = (intVal & 0x0000ff00) >> 8;
thirdLowest = (intVal & 0x00ff0000) >> 16;
如果您需要全部4个字节,则需要检查符号位的处理方式......