[問題] byte 相加

看板java作者 (藍藍欠)時間7年前 (2017/06/12 21:49), 7年前編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
前輩好 我用 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

06/12 22:24, , 1F
cSum 處理 overflow 的方式一樣嗎,重點是答案不同
06/12 22:24, 1F

06/13 08:30, , 2F
就用int算啊何必堅持byte
06/13 08:30, 2F

06/13 08:31, , 3F
重點在overflow的處理方法
06/13 08:31, 3F

06/13 08:32, , 4F
假設就只保留byte部分,那就int checksum = a+b+c
06/13 08:32, 4F

06/13 22:02, , 5F
06/13 22:02, 5F

06/15 22:53, , 6F
謝謝指教@@
06/15 22:53, 6F
文章代碼(AID): #1PFflKH1 (java)
文章代碼(AID): #1PFflKH1 (java)