2013-07-10 26 views
1

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

下面是一些示例代码:

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

嵌入式系统C语言编写,已经好几年了,所以没有机会有改变。

回答

1

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

换句话说,你没有问题。

+0

如果OP需要打印它,这将工作。 '((int)attributeCode&0xFF)' –

+0

非常感谢你们! – user2569400

相关问题