将 Hex 转换为 Short 的问题得到错误的值

Issues converting Hex to Short getting the wrong value

我有一个函数可以将 2 个 char 值转换为 unsigned short:

unsigned short ToShort(char v1, char v2) {
    unsigned short s = ((v1 << 8) | v2);
    return s;
}

它大部分时间都有效,但偶尔我会得到一个不正确的数字。正如我们所看到的,我的输出文件中的一些数字在 65000 左右,而它们应该是一个较小的数字。这种情况也会发生在大量情况下。

左边一个,我们有很好的输出。右边是我自己的输出。

两个输出使用相同的输入。从文件中读取字节并将其存储到字符数组中。该数组包含短值。当一些值被放入 short 时,您可以看到错误。

char 在 OR 运算时得到符号扩展。而不是 v2 你可以这样做:

(v2 & 0xFF)

unsigned char也是可以的