gpt4 book ai didi

c# - 将两个 sbyte 合并为 int

转载 作者:行者123 更新时间:2023-12-03 19:38:11 24 4
gpt4 key购买 nike

我有两个字节。我如何必须通过忽略每个字节的最高有效位来组合这两个字节。

事实上两个字节是有符号字节。所以我必须忽略最高有效位并连接 7 个剩余位。

这是我的代码和简单的示例。我得到每个字节的最后 7 位。然后我将第一个字节左移 7 并添加第二个字节。但是它没有给出正确的结果。

byte b1 = 131; // 10000011
byte b2 = 96; // 01100000

//Ignoring most significant bit and get 7 remaining bits.
byte t1 = (byte) (b1 & 127); // 0000011 in 8-bits saved as 00000011
byte t2 = (byte) (b2 & 127); // 1100000 in 8-bits saved as 01100000

// Left shift first byte by 7. and add the second byte
// t1: 00000011 0000000
// t2: 0 1100000 +
// 00000011 1100000 =
int ut1t2 = t1 << 7 + t2; // 480 is expected but it gives 384

最佳答案

您得到错误的结果,因为 << has lower precedence then + 。您可以使用|来做到这一点不带括号(对位进行操作时,按位或比 + 更常见)

int ut1t2 = t1 << 7 | t2;

或者甚至在一行中完成,如下所示:

int ut1t2 = ((b1 & 127) << 7) | (b2 & 127);

关于c# - 将两个 sbyte 合并为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492723/

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