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