Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何在Outputstream中传递大于128的int值_Java_Embedded_Bytearray_Outputstream - Fatal编程技术网

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

Java:如何在Outputstream中传递大于128的int值,java,embedded,bytearray,outputstream,Java,Embedded,Bytearray,Outputstream,我有一个嵌入式系统,我必须将Java应用程序与之集成。到目前为止,我的工作一直进展顺利,但现在我遇到了一个问题,我需要发送数字160作为一个位。OutputStream将只接受字节[],当我尝试将160(十六进制值0xA0)插入数组时,它将转换为-96。我知道Java字节只支持有符号值(-127到128),所以我想知道是否有其他人在处理嵌入式系统时遇到过类似的问题,他们的解决方案是什么 以下是一些示例代码: OutputStream oStream = mmSocket.getOutputStr

我有一个嵌入式系统,我必须将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编写的,已经存在多年了,所以没有机会改变这种情况。

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


换句话说,您没有问题。

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


换句话说,您没有问题。

如果OP需要打印它,这将起作用<代码>((int)attributeCode&0xFF)如果OP需要打印它,这将起作用<代码>((int)attributeCode&0xFF)