作者blueblueChen (蓝蓝欠)
看板java
标题[问题] byte 相加
时间Mon Jun 12 21:49:05 2017
前辈好
我用 android studio 开发APP,将这个以下的byte array传到装置,装置将最後一个byte
作为 checksum来判断是否有效数据。
byte[] value={(byte)0x01,(byte)0x02,(byte)0x03,checksum}
而 checksum 的算法是 value[0]+value[1]+value[2];
我在 android studio 测试
checksum = (byte)0x01+(byte)0x02+(byte)0x03; --->可以编译
byte a = 0x01;
byte b = 0x02;
byte c = 0x03;
checksum = a+b+c; ---->却不行, error 讯息说 imcompatiable type, requried byte
but find int.
checksum = (byte)a+(byte)b+(byte)c; 一样 error.讯息说byte不需要,a已经是byte了
checksum = (byte)((byte)a+(byte)b+(byte)c) -->可以过,但和装置认定的checksum
不同。因为在手机端他是用int去作
加法,再强制转换成byte。
怎回事阿.. 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.115.110.197
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1497275348.A.441.html
※ 编辑: blueblueChen (58.115.110.197), 06/12/2017 21:52:21
1F:→ snowlike: cSum 处理 overflow 的方式一样吗,重点是答案不同 06/12 22:24
2F:→ ssccg: 就用int算啊何必坚持byte 06/13 08:30
3F:→ ssccg: 重点在overflow的处理方法 06/13 08:31
4F:→ ssccg: 假设就只保留byte部分,那就int checksum = a+b+c 06/13 08:32
6F:→ blueblueChen: 谢谢指教@@ 06/15 22:53