Java:如何在输出流中传递大于 128 的 int 值

标签 java embedded arrays 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 语言编写的,已经存在很多年了,所以没有机会改变它。

最佳答案

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

换句话说,你没有问题。

关于Java:如何在输出流中传递大于 128 的 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576400/

相关文章:

java - 如何在 Java 中解析 SAX 解析器中的嵌套元素?

java - mongodb BSON对象错误

c++ - C 等价于 C++ 指针密集型例程

windows - 如何在Windows XP Embedded(未安装Sc.exe)上创建服务?

javascript - jquery全日历使用循环动态设置事件

java - 可以在java中创建自定义jpa注释

java - Wicket/Java UI框架开发

localization - 如何在微 Controller 上支持多种语言?

Java:删除并重新创建具有不同大小的数组

javascript - 如何循环遍历音频文件的 javascript 数组?