为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

饮歌长啸 2022-10-13 13:11:22
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,其它的正常.
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

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

查看完整回答
反对 回复 2022-10-16
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

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

查看完整回答
反对 回复 2022-10-16
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

byte的数据范围只能是-128到127,你后面几个都大于127了,用int或者short试试。

查看完整回答
反对 回复 2022-10-16
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信