各位大侠,请问遇到下面的问题该怎么处理?

java 串口通讯,发送大于128的数时,收到的却是0xff,
而我发送小于128的数据时,接收到的数据都正常,当发送大于128的数时,收到的却是0xff,
请问如何处理?
byte[] = new byte {0x11,0x22,0x33,0x44,0x55,0x66,0x77,(byte)0x88,(byte)0x99,(byte)0xAA};
接收到的数据为,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0xff,0xff,0xff
后面大于128的都变成了0xff,因为java串口通讯发送的int,有符号的数据,当数据大于128时,就变成了负数,
请问这种如何处理.
我直接接计算机的TX,RX,是正常的,即发出是什么,就收到什么数据,没有变化.
但是如果发送给带linux操作系统的ARM板
就会出现发送大于128数据,变成0xff,其它的正常.

饮歌长啸
浏览 131回答 3
3回答

跃然一笑

通用的方案:发送前将数据用Base64编码,接受数据后用Base64解码。Base64编码之后的长度会比没编码前多大约1/2的字节数,所以自己看看能不能接受。

慕桂英546537

作为一个路过的人,给你提点建议:1. 没有源代码很难搞清楚你到底遇到了什么问题,除非和你碰上了同样问题并解决了的人2. 你至少要把你发送部分代码,和接收部分代码给我们看看吧3. 既然我直接接计算机的TX,RX,是正常的,即发出是什么,就收到什么数据,没有变化.这个成立,那么我觉得和发送的程序应该没多大关系

慕丝7291255

byte的数据范围只能是-128到127,你后面几个都大于127了,用int或者short试试。
打开App,查看更多内容
随时随地看视频慕课网APP