1

我有一个嵌入式系统,我必须将我的 Java 应用程序与之集成。到目前为止,我的工作进展顺利,但现在我遇到了一个问题,我需要发送 160 号。OutputStream 将只接受一个字节 [],当我尝试将 160(十六进制值 0xA0)插入数组时,它被转换为 -96。我知道 Java 字节只支持有符号值(-127 到 128),所以我想知道是否有其他人在处理嵌入式系统时遇到过类似的问题以及他们的解决方案是什么。

这是一些示例代码:

OutputStream oStream = mmSocket.getOutputStream();
byte attributeCode = (byte)0xA0;
byte[] buffer = new byte[bufferSize];
buffer[command.length + 1] = attributeCode;
oStream.write(buffer);

嵌入式系统是用 C 语言编写的,并且已经存在多年,所以没有机会改变它。

4

1 回答 1

1

无论是被视为值为 -96 的有符号字节,还是被视为值为 160 的无符号字节,该字节都是完全相同的。这不会对另一端的 C 程序产生任何不利影响;唯一的区别是当您尝试在 Java 中打印出该值时会发生什么。

换句话说,你没有问题。

于 2013-07-10T16:50:27.290 回答