可能重复:
Java 整数到字节数组
这是另一个与下面的原始问题仍然相关的问题:
如果我有一个占用 4 个字符(2 个字节)的十六进制数,另存为整数。例子:
int value = 0xFFFF;
这在 java 中将使它成为一个 4 字节的十六进制,其中 2 个字节完全为空。
我怎样才能只抓取有数据的两个字节?
非常感谢您的帮助!:)
回答我的第二个问题:
md_5 在下面发布了更好的答案。
因此,要获得包含数据的 SINGLE 字节,您可以简单地执行以下操作:
byte b1 = (byte) ((i >> 8) & 0xFF); byte b2 = (byte) i & 0xFF
如果整数范围内的数字更大,则只需执行 b1 = i >> 24、b2 = i >> 16 等。从移位中减去 8,因为这是一个字节的大小。
另一种方法使用原始问题的答案:
int hex = 0xF15E;
byte[] bytes = ByteBuffer.allocate(4).putInt(hex).array();
for(int i = 0; i < 4; i++) {
System.out.format("0x%X ", bytes[i]);
}
输出:
0x0 0x0 0xF1 0x5E
所以然后取重要的字节:
byte[] importantBytes = {bytes[2], bytes[3]};
原始问题:
由于能够将 Integer 转换为 byte[],这个问题可能已经过时,但这里是:
如何将整数转换为具有前导 0 的十六进制?
所以如果我有整数:4096,十六进制就是 00001000。
总体目的是然后将此格式化的十六进制字符串转换为 byte[] (然后将其保存),但我认为我可以通过上述方式做到这一点。
但是仍然......我们如何将此整数转换为格式化的十六进制字符串?这甚至实用吗?
首选语言是 Java,我查看了 Integer.toHexString()。
我最初需要的工作解决方案:
int value = 2147483647;
byte[] bytes = ByteBuffer.allocate(4).putInt(value).array();
for(int i = 0; i < 4; i++)
System.out.format("0x%X ", bytes[i]);