我真的很沮丧。在尝试实现 CRC-CCITT 算法时,我在 Internet 站点上找到了一个非常好的示例。
有一行的输出我完全不明白:
unsigned short update_crc_ccitt( unsigned short crc, char c){
[...]
short_c = 0x00ff & (unsigned short) c;
[...]
}
我想计算 "test"
字符串 "123456789"
的 CRC。所以在第一次运行时,char 'c' 是 1。根据我的理解,第一次运行的 short_c
也应该等于 1
,但是当我将它打印到控制台,我得到 short_c = 49
for c = 1
。怎么办?
0x00ff in binary is: 1 1 1 1 1 1 1 1
char 1 in binary is: 0 0 0 0 0 0 0 1
bitand should be : 0 0 0 0 0 0 0 1
我的错误在哪里?
最佳答案
字符 1
的 ASCII 码为 0x31 = 49。这与 ASCII 码为 1 的字符(^A
)不同。
关于c - 按位与 C 中的 HEX 和 CHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18652206/