gpt4 book ai didi

java - 如何将两个字节变成 Long? 0x7 + 0x86 = 0x1c000

转载 作者:行者123 更新时间:2023-12-01 17:21:07 25 4
gpt4 key购买 nike

我正在尝试将表示无符号整数的两个字节转换为 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"

我对高字节进行位移位,然后将两个字节加在一起。但添加的时候有一些问题。我预计第一个日志输出会给出 1926,但这并没有发生。为什么?

最佳答案

您遇到运算符优先级问题。 +<< 之前评估。 (通常使用 | 进行组合)。

long myLong = ((buffer[0] & 0xFF) << 8) | (buffer[1] & 0xFF)

关于java - 如何将两个字节变成 Long? 0x7 + 0x86 = 0x1c000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com