gpt4 book ai didi

Java: byte[] 移位操作变成 short

转载 作者:行者123 更新时间:2023-11-29 04:32:13 24 4
gpt4 key购买 nike

我有一个大小为 4096 的字节数组。我用 0xA2 填充字段 0,用 0xF0 填充字段 1。

我的目标是将字段 0 向左移动 8 位,然后与字段 1 进行或运算并将其存储到一个短变量中。

纸上的结果应该是:

     1010 0010 (0xA2) 
>>shift left by 8 bits
1010 0010 0000 (0xA20)

>>OR-operation with field 1
1010 0010 0000 (0xA20)(field 0)
1111 0000 (0xF0)(field 1)
----------------------
1010 1111 0010 (0xAF2)

已经有 a similar post但这只是帮助了一点点。即使我正在转换,它似乎也切断了移位的位。这是代码。

public static void main(String[] args) {
byte[] myMem = new byte[4096];
myMem[0] = (byte)0xA2;
myMem[1] = (byte)0xF0;

short test = (short)(myMem[0] << 8 | myMem[1]);
}

调试器显示以下值:

myMem[0] = -94 (which is correctly 0xA2)
myMem[1] = -16 (which is correctly 0xF0)
test = -16 (which is wrong, 0x00A2. Should be -23824 or 0xA2F0).

我想我在某个地方犯了一个逻辑错误,但我找不到它。

最佳答案

使用

    short test = (short)((myMem[0]  << 8) | ((myMem[1])& 0xff));

关于Java: byte[] 移位操作变成 short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43378432/

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