簡體   English   中英

C++ 將字節寫入文件

[英]C++ writing byte to file

我正在嘗試將一個字節寫入 C++ 中的文件。 當我保存它時,它是 8 字節大,而不是 1 字節。 我怎樣才能准確地保存一個字節?

ofstream binFile("compressed.bin", ios::out | ios::binary);
bitset<8> a("10010010");
binFile << a;

ls -la 的 Output:

.rw-r--r-- name staff   8 B  Sat Dec  4 23:26:18 2021  compressed.bin

我怎樣才能把它縮小到一個字節?

operator <<專為格式化的output 設計。

在編寫嚴格的二進制文件時,您應該關注成員函數put (用於一個字節)或write (用於可變字節數)。

這會將您的位集寫入單個字節。

binFile.put( a.to_ulong() );

我不確定 class bitset<size_t> 是什么,但它似乎在下面創建了一個 uint64_t 。 也許模板參數是字節數而不是位?

我可以用

std::ofstream binFile("onebyte.bin", std::ios::out | std::ios::binary);
uint8_t aByte = 0x77; // this is w in ASCII. Easy to see in a bin file
binFile << aByte;

也許您需要將 bitset 轉換為 uint8_t?

暫無
暫無

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

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