哪个字符具有全零的位表示?
对于上下文,我想知道如何获取全零的位数组以及 c/c++ 的新内容
unsigned char** result = (unsigned char**) malloc(sizeof(unsigned char)
* rows);
for (int i = 0 ; i < rows ; i++) {
result[i] = (unsigned char *) malloc(sizeof(unsigned char) * cols);
memset(result[i], 0, sizeof(unsigned char) * cols);
}
当我尝试打印位表示时(使用 c & 128、c & 64,我仍然得到已设置的位)
例如:(行=3,列=2)
00100000 00110111
00000000 00000000
00000000 00000000
最佳答案
在第一行中,您的 malloc 分配了错误的大小。当您应该为指向 1 的指针分配足够的空间时,您正在分配一个 unsigned char,如下所示。
unsigned char** result = (unsigned char**) malloc(sizeof(unsigned char *) * rows);
这意味着在循环中分配的早期指针的最高有效字节将被后续的 malloc 结果破坏。因此,当您查看 result[i]
时,您实际上不再查看内存中的正确位置。
关于字符到位表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433989/