我有一個C程序,它將頻率表寫入二進制文件。 頻率表是一個填充了包含int和char的結構的數組。C - 僅使用3個字節將整數寫入二進制文件
所以我必須寫一個無符號的int計數器和一個無符號的字符到文件(多次)。
我知道一個整數通常使用4個字節,但我知道int計數器永遠不會大於2^24-1。
所以我可以使用4個字節來寫計數器和字符到文件=> 3個字節的計數器和1個字節的字符。這也很容易閱讀。
有沒有一種簡單的方法可以在不使用特殊庫的情況下在C中執行此操作?
我有一個C程序,它將頻率表寫入二進制文件。 頻率表是一個填充了包含int和char的結構的數組。C - 僅使用3個字節將整數寫入二進制文件
所以我必須寫一個無符號的int計數器和一個無符號的字符到文件(多次)。
我知道一個整數通常使用4個字節,但我知道int計數器永遠不會大於2^24-1。
所以我可以使用4個字節來寫計數器和字符到文件=> 3個字節的計數器和1個字節的字符。這也很容易閱讀。
有沒有一種簡單的方法可以在不使用特殊庫的情況下在C中執行此操作?
是的,有由char
24位轉移到做在C.您可以結合char
,這是在所有平臺上的一個字節,與規模高達24位的int的一個非常簡單的方法左邊:
uint32_t toWrite = (myChar << 24) | myCount;
當讀回數據,則執行相反的操作:
uint32_t fromFile;
uint32_t myCount = fromFile & 0xFFFFFF;
char myChar = (fromFile >> 24) & 0xFF;
這可以很容易使用'炭[4]'和'fread' /'fwrite'來完成。如果這還不足以提示,請更具體地說明你不知道該怎麼做。 – zwol