Запишите один бит в двоичный файл, используя BinaryWriter

Я хочу записать один бит в двоичный файл.

using (FileStream fileStream = new FileStream(@"myfile.bin", FileMode.Create))
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
    binaryWriter.Write((bool)10);
}

Что-то вроде binaryWriter.Write((bit)1);
Когда я использую binaryWriter.Write((bool)1) файл имеет один байт, но я хочу записать один бит. Это возможно?

4 ответа

Решение

Вы не можете хранить только 1 бит в файле. Почти все современные файловые системы и оборудование хранят данные в сегментах по 8 битов, или байтов или октетов.

Если вы хотите сохранить битовое значение в файле, сохраните 1 или 0 как байт (00000001 или 00000000).

Нет, невозможно написать ни одного бита. Вы должны написать хотя бы полный байт. Если вы находитесь в ситуации, когда вы хотите записать отдельные биты, вы можете подождать, пока у вас не будет готово 8 бит для записи (т.е. поместить их в очередь в памяти), а затем записать полный байт (т.е. использовать сдвиги битов и т. Д. Для объединения этих битов). биты в байт).

Также из Википедии:

Исторически, байт был числом битов, используемых для кодирования одного символа текста в компьютере, и по этой причине он является основным адресуемым элементом во многих компьютерных архитектурах.

Вы могли бы, вероятно, сделать это путем чтения / изменения / записи. Почему вы хотите сделать такую ​​вещь? Что бы это ни было, найдите другой способ, упакуйте биты в байты, читайте / записывайте логические байты и конвертируйте их обратно в биты, используйте ASCII '0' и '1' - почти все, кроме чтения и записи по одному биту за раз.

Если вы пишете только биты, вы можете смешать 8 бит в один байт. Но невозможно написать ни одного бита.

Другие вопросы по тегам