gpt4 book ai didi

java - 如何将整数转换为格式化的 4 字节十六进制(带前导 0)

转载 作者:行者123 更新时间:2023-12-02 00:03:51 26 4
gpt4 key购买 nike

Possible Duplicate:
Java integer to byte array

这是另一个仍然与下面的原始问题相关的问题:

如果我有一个占用 4 个字符(2 个字节)的十六进制数字,并保存为整数。示例:

int value = 0xFFFF;

这在 java 中将使其成为 4 字节的十六进制,其中 2 个字节完全为空。

我怎样才能只获取有数据的两个字节?

非常感谢您的帮助! :)

回答我的第二个问题:

md_5 在下面发布了更好的答案。

So to get the SINGLE byte that has data you can simply do: byte single = (byte) i & 0xFF If you had a bigger number up to 65535 (0xFFFF) you can do:

byte b1 = (byte) ((i >> 8) & 0xFF); 
byte b2 = (byte) i & 0xFF

If you had an even larger number in the integer range you just do b1 = i >> 24, b2 = i >> 16, etc etc etc. Subtracting 8 from the shift as that is the size of a byte.

另一种方法使用原始问题的答案:

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。

总体目的是将这个格式化的十六进制字符串转换为字节[](然后保存),但我想我可以通过上面的方法来做到这一点。

但是...我们如何将这个整数转换为格式化的十六进制字符串?这实用吗?

首选语言是 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]);

最佳答案

尝试使用Formatter ,或其便利包装之一,如 String.format例如:

String str = String.format("%08x", val);

这将为您提供一个String,但我将把它留给您将其转换为byte[]...

关于java - 如何将整数转换为格式化的 4 字节十六进制(带前导 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com