看板 AndroidDev 關於我們 聯絡資訊
請問一下各位版友 最近在做收data的程式 而收到的data都是用byte存起來 可是如果我拿來用都會有單位轉換的問題 如我宣告 int a ; 去收收到的data a = dataa<<8 + datab; 這樣收到的結果都是錯的 而我處理64bits的時候問題更大 請問大家有推薦的書或網站在講怎麼處理這個的嗎 以前寫c都直接轉來轉去都不會有問題 不太清楚這部分應該怎麼處理 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.64.119
sdyy:一個int有4bytes 你只移兩個導致數值不對? 08/08 22:39
acespeed:所以是說我只有填入兩個byte進去~剩下的兩個high byte 08/08 22:50
acespeed:我也要自己填入嗎?~好像可能是這樣ㄟ!我試試!謝謝 08/08 22:51
acespeed:不過這裡http://ppt.cc/E6m7似乎int不是4個bytes? 08/08 22:53
priv:我覺得是你的 byte 收進來沒考慮正負號的問題吧。 08/08 23:48
priv: a 的 high byte 和你指定值給它有什麼關係,a 這邊用的是等 08/08 23:50
priv:於又不是 bit operation 08/08 23:50
priv:然後你還要注意 byte order 08/08 23:52
LPH66:重點應該是五樓提的問題 java 所有數字都是有號數 08/09 00:15
LPH66:所以不能單純用 high << 8 + low 合併 08/09 00:17
LPH66:視你的數值來源 (high << 8) | low 也不一定對 08/09 00:17
LPH66:比較穩的還是得要把所有來的 byte 先 &0xFF 再合併 08/09 00:18
jerrysky:byte要顯轉成int再去shift吧@@ byte直接shift不就不見了? 08/09 01:12
LPH66:我沒記錯的話 java 在對比 int 小的整數運算時會先變成 int 08/09 01:27
LPH66:其運算結果也是個 int 08/09 01:28
acespeed:好我試試看~謝謝大家 08/09 10:25