我對二進制文件有點困惑,我知道的數據都是存儲在二進制文件的塊,並從我的知識,通過實驗我發現,如果我們有這樣的與成員變量的結構體:如何讀取二進制文件的塊(未知大小)?
struct student{
int Roll_No;
char Name[10];
}
然後,在用內容更新變量並將其保存在二進制文件中後,二進制文件爲14個字節,10個字節的char和4個int,因此如果我們在hexeditor中分析文件,則該文件有4個字節爲Roll_no保留並且爲Name保留10個字節,其中填充的內容被填充,其他的可以看作文件中的點,我的意思是如果我們創建一個類似上面的struct/class的程序,並且在將內容保存到文件後,文件的大小是和我們創建的結構一樣,我的意思是4的int和10的char,所以從我的知識,如果我創建一個新的圖像格式,例如。 (DOT).MyIMG,從我的程序,其是結構/類是這樣
struct MyIMG{
char Header[5];
int width, height;
int Pixels[124000];
}
然後我的程序將創建大小的新文件49613個字節或49個Kigabytes(這是頭5,+(加號)8的int高度和寬度,+(加上)4×124000的int像素),其中像素是4,8,100,或者任何它將寫入整個像素陣列的空白,所以爲什麼這個效果不能在任何大軟件如MSpaint,Adobe公司的Photoshop,他們做什麼,這使得他們的程序編寫的文件的大小取決於存儲像素不是空白陣列...
編輯:我現在編輯我的問題,並明確定義我的問題,請幫助我,提前致謝!
這些點並不意味着「無」,它們的意思是「不可打印的字符」。 –
是......這是一句話嗎? – etheranger
我知道那些是不可打印的ascii字符,因爲十六進制編輯器顯示文件的十六進制值的一側,另一側顯示爲ascii,並且我沒有用C++的視圖來表示,因爲在讀入內存之後(在一個變量中,例如。Char)字符串在字符串結束的地方自動終止,但是如何處理大小不等的文件,我不知道,你明白我了? – Rishabh