首页 文章

C - 仅使用3个字节将整数写入二进制文件

提问于
浏览
1

我在C中有一个程序,它将频率表写入二进制文件 . 频率表是一个数组,其中包含一个包含int和char的结构 .

所以我必须在文件中写一个unsigned int计数器和一个unsigned char字符(多次) .

我知道一个整数通常使用4个字节,但我知道int计数器永远不会大于2 ^ 24-1 .

所以我可以用4个字节来写计数器和字符到文件=> 3个字节用于计数器,1个字节用于字符 . 这也很容易阅读 .

是否有一种简单的方法可以在C中执行此操作而不使用特殊库?

1 回答

  • 4

    是的,在C中有一种非常简单的方法 . 通过将 char 向左移24位,可以将 char (在所有平台上为一个字节)和最大为24位的int组合在一起:

    uint32_t toWrite = (myChar << 24) | myCount;
    

    当您读回数据时,执行相反的操作:

    uint32_t fromFile;
    uint32_t myCount = fromFile & 0xFFFFFF;
    char myChar = (fromFile >> 24) & 0xFF;
    

相关问题