I am programming an entropy coding algorithm and I want to write single bits like an encoded character to a file. For example I want to write 011 to a file but if you would store it as character it'd take up 3 Bytes instead of 3 Bits. So my final question is: How can I write single bits to a file?
Thanks in advance!
You can't write individual bits to a file, the resolution is a single byte.
If you want to write bits in sequence, you have to batch them up until you have a full byte, then write that. Psuedo-code (though C-like) for that would be along the lines of:
currbyte = 0
bitcount = 0
def writeBit (bit):
currbyte = currbyte << 1 | bit
bitcount++
if bitcount == BITS_PER_BYTE:
write currbyte to file
currbyte = 0
bitcount = 0
Of you want to change individual bits, you have to read in a byte, use bitwise operations to manipulate it, then write it back.
来源:https://stackoverflow.com/questions/27589460/how-to-write-single-bits-to-a-file-in-c