将字节数组转换为长
converting bytes array into long
我正在尝试将以下数组转换为长数字。
我的预期结果:153008(我不确定它是十进制还是六进制)
我的实际结果(我得到的):176
这是我做的,我做错了什么?
byte bytesArray [] = { -80,85,2,0,0,0,0,0};
long Num = (bytesArray[7] <<56 |
bytesArray[6] & 0xFF << 48 |
bytesArray[5] & 0xFF << 40 |
bytesArray[4] & 0xFF << 32 |
bytesArray[3] & 0xFF << 24 |
bytesArray[2] & 0xFF << 16 |
bytesArray[1] & 0xFF << 8 |
bytesArray[0] & 0xFF << 0 );
像这样添加括号:
long num = (bytesArray[7] << 56 |
(bytesArray[6] & 0xFF) << 48 |
(bytesArray[5] & 0xFF) << 40 |
(bytesArray[4] & 0xFF) << 32 |
(bytesArray[3] & 0xFF) << 24 |
(bytesArray[2] & 0xFF) << 16 |
(bytesArray[1] & 0xFF) << 8 |
(bytesArray[0] & 0xFF) << 0 );
否则你在 0xFF
上做 <<
所以它变得非常大,在你做 bytesArray[x] & [large number]
之前它总是评估为 0
.
结果153008
,因此成功!
我正在尝试将以下数组转换为长数字。
我的预期结果:153008(我不确定它是十进制还是六进制)
我的实际结果(我得到的):176
这是我做的,我做错了什么?
byte bytesArray [] = { -80,85,2,0,0,0,0,0};
long Num = (bytesArray[7] <<56 |
bytesArray[6] & 0xFF << 48 |
bytesArray[5] & 0xFF << 40 |
bytesArray[4] & 0xFF << 32 |
bytesArray[3] & 0xFF << 24 |
bytesArray[2] & 0xFF << 16 |
bytesArray[1] & 0xFF << 8 |
bytesArray[0] & 0xFF << 0 );
像这样添加括号:
long num = (bytesArray[7] << 56 |
(bytesArray[6] & 0xFF) << 48 |
(bytesArray[5] & 0xFF) << 40 |
(bytesArray[4] & 0xFF) << 32 |
(bytesArray[3] & 0xFF) << 24 |
(bytesArray[2] & 0xFF) << 16 |
(bytesArray[1] & 0xFF) << 8 |
(bytesArray[0] & 0xFF) << 0 );
否则你在 0xFF
上做 <<
所以它变得非常大,在你做 bytesArray[x] & [large number]
之前它总是评估为 0
.
结果153008
,因此成功!