将bytes数组转换为long

时间:2017-11-13 09:47:00

标签: java long-integer

我正在尝试将以下数组转换为长数字。

我的预期结果: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 );

1 个答案:

答案 0 :(得分:1)

添加如下括号:

    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之前。

结果select,因此成功!