我在C中有一个程序,它将频率表写入二进制文件 . 频率表是一个数组,其中包含一个包含int和char的结构 .
所以我必须在文件中写一个unsigned int计数器和一个unsigned char字符(多次) .
我知道一个整数通常使用4个字节,但我知道int计数器永远不会大于2 ^ 24-1 .
所以我可以用4个字节来写计数器和字符到文件=> 3个字节用于计数器,1个字节用于字符 . 这也很容易阅读 .
是否有一种简单的方法可以在C中执行此操作而不使用特殊库?
是的,在C中有一种非常简单的方法 . 通过将 char 向左移24位,可以将 char (在所有平台上为一个字节)和最大为24位的int组合在一起:
char
uint32_t toWrite = (myChar << 24) | myCount;
当您读回数据时,执行相反的操作:
uint32_t fromFile; uint32_t myCount = fromFile & 0xFFFFFF; char myChar = (fromFile >> 24) & 0xFF;
1 回答
是的,在C中有一种非常简单的方法 . 通过将
char
向左移24位,可以将char
(在所有平台上为一个字节)和最大为24位的int组合在一起:当您读回数据时,执行相反的操作: