Java将Int转换为Hex并将其粘贴在字节数组元素中

时间:2012-05-15 22:48:23

标签: java arrays hex byte

我已经开始学习一点java了,我正在努力完成一项非常简单的任务,但我正在努力解决它。

假设我有一个字节数组:

byte[] test = {(byte) 0x0a, (byte) 0x01, (byte) 0x01, (byte) 0x0b};

我想将test [3](当前数字11(0b)的最后一个值)更改为随机的。

Random generator = new Random();

int newTest3 = generator.nextInt(255);

所以,现在我在newTest3中有一些随机数。我想将其转换为十六进制(FF),然后将其放入测试的最后一个元素,或测试[3]。

我找不到太多可以帮助我的事情,而且我几个小时前刚刚拿起了java,所以任何帮助都会很出色!

提前致谢:)

2 个答案:

答案 0 :(得分:3)

我不明白为什么你会这么麻烦。 正如你已经在做的那样使用显式转换:) 当你写:

byte[] test = {(byte) 0x0a, (byte) 0x01, (byte) 0x01, (byte) 0x0b};

0x0a实际上是一个显式转换为字节的int。您可以使用newTest3执行相同的操作。

test[3] = (byte)  newTest3;

请注意,这种类型的转换通常涉及数据丢失,因为字节只有8位,int是32位。例如(FFFFFFFF将转换为FF)。

答案 1 :(得分:2)

使用字节缓冲区

// elsewhere
import java.nio.ByteBuffer;

byte[] arr = new byte[4];
ByteBuffer buf = ByteBuffer.wrap(arr);
buf.putInt(generator.nextInt(255);