c - 按位与 C 中的 HEX 和 CHAR

标签 c char hex bitwise-and

我真的很沮丧。在尝试实现 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/

相关文章:

c++ - 如何在 C++ 中将 char* 转换为 unsigned short

c++ - 将十六进制转储值作为字符串传递

c - 将 unsigned int 传递给函数是否会导致其丢失位?

c - linux C 服务器 - 识别/命名客户端

mysql - mysql 中的并行查询执行

c - 用 C 编写程序,通过 for 循环查找用户定义的平均值

c - C 中用字符串初始化的静态 char 数组

c - 如何去除 "bash"中对 "C"有特殊意义的字符串中的标点符号

c - 在 C 中使用带有数组的循环

objective-c - 如何将十六进制转换为RGB