[英]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.