gpt4 book ai didi

java - Java 中的 LSB/MSB 处理

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:04 25 4
gpt4 key购买 nike

如果我必须处理以字节形式存储的值,例如 0x118,我该如何拆分 LSB 和 MSB?

我正在尝试以下方式......我不认为这是正确的方式:

value = 0x118;  

以字节为单位存储...

result[5] = (byte) value;  
result[6] = (byte)(value << 8);
...

正确的做法是什么?

最佳答案

这样做就可以了:

result[5] = (byte) (value & 0xFF);           // Least significant "byte"
result[6] = (byte) ((value & 0xFF00) >> 8); // Most significant "byte"

我通常使用位掩码——也许不需要它们。第一行选择低八位,第二行选择高八位并将这些位向右移动八位。这等于除以 28


这就是背后的“诡计”:

  (I) LSB

01010101 10101010 // Input
& 00000000 11111111 // First mask, 0x00FF
-----------------
00000000 10101010 // Result - now cast to byte

(II) MSB

01010101 10101010 // Input
& 11111111 00000000 // Second mask, 0xFF00
-----------------
01010101 00000000 // Result -
>>>>>>>> // "Shift" operation, eight positions to the right
-----------------
00000000 01010101 // Result - now cast to byte

总结一下,做以下计算:

 byte msb = result[6];
byte lsb = result[5];
int result = (msb << 8) + lsb; // Shift the MSB bits eight positions to the left.

关于java - Java 中的 LSB/MSB 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5167079/

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