【发布时间】:2016-06-14 14:09:09
【问题描述】:
字节[] 要求=新字节[2]; 假设 demande 是一个数据帧,它将被发送到一个套接字。 如果我想发送 200,应该是 byte[0] 和 byte[1]。我尝试写 byte[0]=1 和 byte[1]=-56 ( 1*256 - 56)=200 但它没有工作。我该怎么办?
【问题讨论】:
字节[] 要求=新字节[2]; 假设 demande 是一个数据帧,它将被发送到一个套接字。 如果我想发送 200,应该是 byte[0] 和 byte[1]。我尝试写 byte[0]=1 和 byte[1]=-56 ( 1*256 - 56)=200 但它没有工作。我该怎么办?
【问题讨论】:
我假设数字 200 是十进制值。 由于 200 小于 255,它将适合一个字节,因为 200 的十六进制值是 0xC8。
所以在您的情况下,您有两个选择。哪个是正确的取决于您使用的协议。
要么
byte[] demande = { 0x00, 0xC8 }; // little endian
或
byte[] demande = { 0xC8, 0x00 }; // big endian
或者如果你喜欢
byte[] demande = new byte[2];
demande[0] = 0x00;
demande[1] = 0xC8;
(小端)
【讨论】:
您可以使用ByteBuffer 类来创建一个字节数组。如果要将整数 200 转换为字节数组:
ByteBuffer b = ByteBuffer.allocate(2);
b.putInt(0x000000c8);
byte[] result = b.array();
【讨论】: