将 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
也是可以的
我有一个函数可以将 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
也是可以的