2010-11-23 211 views
1

我有一個整數,使用fscanf從文件中檢索。 如何將它作爲十六進制的雙字節整數寫入二進制文件?如何使用C將二進制整數作爲十六進制寫入二進制文件中使用C

+2

這有點不明確。一般來說,你要麼寫二進制文件,要麼寫文本。在hexeditors中看到的2個字節的十六進制只是一種顯示二進制值的形式。 – Jules 2010-11-23 00:11:03

+2

'轉換成二進制文件爲2字節的整數(十六進制)...'所以你想從二進制文件中取出你所取的整數(哪種格式..假設時間短,因爲你想以2字節的格式存儲它)和想把它寫回二進制格式,但在十六進制?這是對數據如何表示的誤解。十六進制數據只是另一種顯示方式(十六進制與十進制與八進制等)。以科學格式檢查你的Windows計算器。您將可以非常方便快捷地在不同的表示之間切換。你可以用TEXT格式存儲整數並顯示十六進制表示 – g19fanatic 2010-11-23 00:15:31

回答

3

這會寫一個短整型二進制文件。結果是2個字節的二進制數據(Endianness依賴於系統)。

int main(int argc, char* argv[]) 
{ 
    short i; 
    FILE *fh; 

    i = 1234; 
    fh = fopen(argv[1], "wb"); 
    fwrite(&i, sizeof(i), 1, fh); 
    fclose(fh); 

} 
0
fprintf(fpout,"%X",input_int); 
0

你的意思是你只是想喜歡"\x20\x20"文件中的兩個字節而不是文本作爲"0x2020"? 假設你的變量很短。 (sizeof(short) == 2)

第一招:fwrite((const void*)&variable, sizeof(variable), 1, file);

第二個:fprintf(file, "%#06x", variable);

相關問題