[問題] android單位轉換問題

看板AndroidDev作者 (xXx)時間12年前 (2013/08/08 22:10), 編輯推噓7(709)
留言16則, 5人參與, 最新討論串1/2 (看更多)
請問一下各位版友 最近在做收data的程式 而收到的data都是用byte存起來 可是如果我拿來用都會有單位轉換的問題 如我宣告 int a ; 去收收到的data a = dataa<<8 + datab; 這樣收到的結果都是錯的 而我處理64bits的時候問題更大 請問大家有推薦的書或網站在講怎麼處理這個的嗎 以前寫c都直接轉來轉去都不會有問題 不太清楚這部分應該怎麼處理 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.64.119

08/08 22:39, , 1F
一個int有4bytes 你只移兩個導致數值不對?
08/08 22:39, 1F

08/08 22:50, , 2F
所以是說我只有填入兩個byte進去~剩下的兩個high byte
08/08 22:50, 2F

08/08 22:51, , 3F
我也要自己填入嗎?~好像可能是這樣ㄟ!我試試!謝謝
08/08 22:51, 3F

08/08 22:53, , 4F
不過這裡http://ppt.cc/E6m7似乎int不是4個bytes?
08/08 22:53, 4F

08/08 23:48, , 5F
我覺得是你的 byte 收進來沒考慮正負號的問題吧。
08/08 23:48, 5F

08/08 23:50, , 6F
a 的 high byte 和你指定值給它有什麼關係,a 這邊用的是等
08/08 23:50, 6F

08/08 23:50, , 7F
於又不是 bit operation
08/08 23:50, 7F

08/08 23:52, , 8F
然後你還要注意 byte order
08/08 23:52, 8F

08/09 00:15, , 9F
重點應該是五樓提的問題 java 所有數字都是有號數
08/09 00:15, 9F

08/09 00:17, , 10F
所以不能單純用 high << 8 + low 合併
08/09 00:17, 10F

08/09 00:17, , 11F
視你的數值來源 (high << 8) | low 也不一定對
08/09 00:17, 11F

08/09 00:18, , 12F
比較穩的還是得要把所有來的 byte 先 &0xFF 再合併
08/09 00:18, 12F

08/09 01:12, , 13F
byte要顯轉成int再去shift吧@@ byte直接shift不就不見了?
08/09 01:12, 13F

08/09 01:27, , 14F
我沒記錯的話 java 在對比 int 小的整數運算時會先變成 int
08/09 01:27, 14F

08/09 01:28, , 15F
其運算結果也是個 int
08/09 01:28, 15F

08/09 10:25, , 16F
好我試試看~謝謝大家
08/09 10:25, 16F
文章代碼(AID): #1I0wRIMz (AndroidDev)
文章代碼(AID): #1I0wRIMz (AndroidDev)