Java下怎么发送无符号byte 到设备

hanQ 发布于 2013/02/26 09:12
阅读 5K+
收藏 0

 求东软的人解释!因为设备协议是东软出品。。。。

Java的数据类型中压根就没有无符号型的数据类型,这个。。。。还要发送0x8f 占1字节。。。。。

现在的做法是byte b=(byte) 0x8f;

可是不行,人跟我说无符号byte是0-255的,--!

尝试OutputStream.write(int)这种发送发送,还是不行。

求解答,急求~

以下是问题补充:

@hanQ:注意:我是要向设备发送byte,不是接受下来进行计算的,计算简单了,可以转成int型去计算就OK了。 但是,我是要去发送这个无符号的byte!!! (2013/02/26 10:36)
@hanQ:已经确认,设备问题。谢谢各位。这种与外设数据交换的东西,遇到一个坑爹厂商,真难受 (2013/03/14 11:05)
加载中
0
hanQ
hanQ

引用来自“throwable”的答案

引用来自“throwable”的答案

有符号没符号不都是计算机识别的吗。。。。

其实,我的意思是,你把0x8f赋值到byte变量同时写到了流中,对方接收到的也只是一串二进制数据啊。

0x8f在java识别为-113,到对方系统可能就是143啊,为啥要纠结在Java里的数据呢??

就是这个地方我不清楚是不是我的问题。我将byte b=(byte)0x8f;强转了,协议一直返回FAIL,我才提问,厂商那边给答复是byte 0-255.
excepiton
excepiton
让厂商那边给出接收数据的日志,这样扯皮没尽头啊。。。
0
hanQ
hanQ

引用来自“dargoner”的答案

移位
我用过 0x8f & 0x7f 进行位于运算,可是java直接识别成了一个int型,移位的话,应该也是一样的吧
0
excepiton
excepiton
有符号没符号不都是计算机识别的吗。。。。
0
平安北京
强制转就行了,对方应该会去做value&0xff运算的
0
dargoner
dargoner
参考 http://xiaolongfeixiang.iteye.com/blog/648700
0
明月照大江
明月照大江
你需要无符号数字的时候,不要把 byte看成是一个数字,就把byte看成是一个字节,一个8位的字节,然后该怎么传还是怎么传,在java里byte的负数部分第一位是1,都看成无符号数的后面部分就可以了,如果为了调试可以将这个byte扩展到short看结果
0
excepiton
excepiton

引用来自“throwable”的答案

有符号没符号不都是计算机识别的吗。。。。

其实,我的意思是,你把0x8f赋值到byte变量同时写到了流中,对方接收到的也只是一串二进制数据啊。

0x8f在java识别为-113,到对方系统可能就是143啊,为啥要纠结在Java里的数据呢??

0
hanQ
hanQ

引用来自“明月照大江”的答案

你需要无符号数字的时候,不要把 byte看成是一个数字,就把byte看成是一个字节,一个8位的字节,然后该怎么传还是怎么传,在java里byte的负数部分第一位是1,都看成无符号数的后面部分就可以了,如果为了调试可以将这个byte扩展到short看结果
已做强转符号位 0x8f & 0x7f 但是,返回值是个int型--!
0
Madai_
Madai_
看协议让你发送什么,假如协议让你发送无符号byte,大小为0x8f,0x8f八位二进制为(10001111),在java中10001111等于-113,所以发送byte(-113)就行了。
返回顶部
顶部