0

我已经开始学习一点 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),然后将其放入测试的最后一个元素或 test[3]。

在这方面我找不到太多帮助,而且我几个小时前刚刚开始学习 java,所以任何帮助都会非常出色!

提前致谢 :)

4

2 回答 2

3

我不明白你为什么要经历这么多麻烦。在您编写时使用显式转换:):

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

0x0a 实际上是一个 int ,您将其显式转换为一个字节。你可以对 newTest3 做同样的事情。

test[3] = (byte)  newTest3;

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

于 2012-05-15T22:54:42.063 回答
2

使用字节缓冲区

// elsewhere
import java.nio.ByteBuffer;

byte[] arr = new byte[4];
ByteBuffer buf = ByteBuffer.wrap(arr);
buf.putInt(generator.nextInt(255);
于 2012-05-15T22:50:47.023 回答