Java:如何在Outputstream中传递高于128的int值

时间:2013-07-10 16:49:14

标签: java embedded bytearray outputstream

我有一个嵌入式系统,我必须与我的Java应用程序集成。到目前为止,我的工作进展顺利,但现在我遇到了一个问题,我需要发送数字160。 OutputStream只接受byte [],当我尝试将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编写的,已存在多年,所以没有机会改变它。

1 个答案:

答案 0 :(得分:1)

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

换句话说,你没有问题。