作者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