作者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://www.ptt.cc/bbs/java/M.1497275348.A.441.html
※ 編輯: blueblueChen (58.115.110.197), 06/12/2017 21:52:21
→ snowlike: cSum 處理 overflow 的方式一樣嗎,重點是答案不同 06/12 22:24
→ ssccg: 就用int算啊何必堅持byte 06/13 08:30
→ ssccg: 重點在overflow的處理方法 06/13 08:31
→ ssccg: 假設就只保留byte部分,那就int checksum = a+b+c 06/13 08:32
→ blueblueChen: 謝謝指教@@ 06/15 22:53