我正在尝试将表示无符号整数的两个字节转换为Long.字节在buffer其中是字节数组.
// buffer[0] = 0x7 and buffer[1] = 0x86
long myLong = ( buffer[0] & 0xFF ) << 8 + ( buffer[1] & 0xFF );
Log.i("TAG",String.format("%d", myLong ); // outputs "114688" (0x1c000)
Log.i("TAG",String.format("%d + %d",
(0xFF&buffer[0])<<8, (0xFF&buffer[1]) )); // outputs "1792 + 134"
Run Code Online (Sandbox Code Playgroud)
我将高位字节进行位移,然后将两个字节加在一起.但是添加有一些问题.我希望第一个日志输出给出1926,但这没有发生.为什么?
运营商优先级存在问题.+以前评估过<<.(通常|用于组合).
long myLong = ((buffer[0] & 0xFF) << 8) | (buffer[1] & 0xFF)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |