字符到位表示

标签 c character-encoding bit

哪个字符具有全零的位表示?

对于上下文,我想知道如何获取全零的位数组以及 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/

相关文章:

c - 奇怪的行为 - 获取 GDT @ 内联程序集

c - stbi_load_from_memory 没有正确读取图像尺寸

java - Android:NoClassDefFoundError:java.nio.charset.StandardCharsets 在 SDK 18 上发送电子邮件

c - 我的 B64 编码器无法工作

c - 读取字符串

c - 在堆栈上对齐或不对齐字符数组?

php - 从 PHP 的 JSON 中去除前导 'u'

java - 位移一个字节

java - 如何将某个值与数组中的值进行比较?

c - 位操作;将一个 16 位值转换为一个包含 16 个 bool 值的数组? C语言