看板 java 關於我們 聯絡資訊
前輩好 我用 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
jtorngl: https://goo.gl/9e9Uhi 06/13 22:02
blueblueChen: 謝謝指教@@ 06/15 22:53