gpt4 book ai didi

Java 十六进制

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:47 28 4
gpt4 key购买 nike

我有一个消息

static int[] message = {
0x01, 0x10, 0x00,
0x01, // port addres 01 - 08
0x00, 0x01, 0x02,
0x06, 0x00,
0xA4, 0x21
};

我知道数据是正确的,因为我正在使用 RXTX 将它们写入 COM 端口,并且我得到了正确的硬件 react

我知道 0x011值,送的真像01 (两位,四分之一字节长)

当我需要调整消息时,这样生成值对吗?

message[index] = 1 & 0xff

我看到了这段代码的输出,它看起来很正常

for (int i = 0; i < 255; i++) {
System.out.println(i & 0xff);
}

有没有推荐我阅读的表格?
将这些数字存储在 int 中对,因为我们不能使用 byte (-128, +127)对于高达 <0x00, 0xFF> 的值范围

最佳答案

您可能想使用 ByteBuffer 来满足您的需要,并将其包装在一个类下。

我不知道您的确切消息格式,但让我们暂时假设这是 3 个字节的数据和 1 个端口的字节:

public final class Message
{
private static final MESSAGE_SIZE = 4;
private static final PORT_OFFSET=3;

private final ByteBuffer buf;

public Message()
{
buf = ByteBuffer.allocate(MESSAGE_SIZE);
}

public void setPort(final byte b)
{
buf.put(PORT_OFFSET, b);
}

// etc

public byte[] getRaw()
{
return buf.array();
}
}

您甚至可以使用 ByteBuffer 的 hashCode() 和 equals() 来比较消息,如果您只使用绝对的 get/put 方法(否则需要大量体操)。 p>

我使用这种技术来读/写 NRPE 数据包。

关于Java 十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777042/

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