簡體   English   中英

將數據保存到二進制文件

[英]saving data to binary file

字符以二進制模式[8位或12位]保存到文件時需要占用多少空間?

fprintf(f,"%ld",ch);

另外,如果我節省了很長的時間[例如5],那么它將占用3位[101]或8位[00000101]的空間

fprintf(f,"%ld",...)

會將您的數字轉換為十進制數字,並需要log_10(ch)個字節來存儲。 使用fwrite存儲它時,它將占用您指定的字節數。

fwrite (buffer , 1 , sizeof(buffer) , f )

還請注意,因為讀寫位址是按字節的,因此永遠不會將單個位存儲到文件,因此始終是8的倍數。

為此,您需要一個很好的幫助工具: sizeof Wiki文章

引用:

在C和C ++編程語言中,一元運算符sizeof用於計算任何數據類型的大小,以表示該類型所需的字節數來衡量。 在這種情況下,一個字節與一個無符號字符相同,並且可能大於8位,盡管這種情況並不常見。 sizeof的結果是它前面的表達式或帶括號的類型說明符的類型的大小,並且具有無符號整數類型,通常用size_t表示。 sizeof可以應用於任何數據類型,包括基本類型,例如整數和浮點類型,指針類型或復合數據類型(聯合,結構或C ++類)。

所以基本上:如果您想知道某個東西將使用多少個字節,只需使用sizeof即可

但是要小心指針和實際上是指針但使用不同的其他元素(如數組)僅以字節為單位顯示指針的大小……而不是指針指向的結構! 並且存儲指針的用途非常有限-下次您要使用的對象可能在內存中的其他位置。

它復制在平台上存儲long所需的字節數( sizeof (long) )。 如果僅復制表示數字所需的位,則在讀取數據時將無法解釋數據。

但是在代碼中,您正在復制到字符串。 因此,將存儲字符(可能是ASCII)表示形式,而不是二進制數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM