Вопрос

Я пишу в двоичный файл, используя fstream, а когда открываю файл, используя двоичный флаг.

Мне нужно было написать какой-нибудь текст в двоичном виде, что просто помогло. Проблема в том, что мне нужно также написать (как показано в шестнадцатеричном формате) 0. Значение при открытии в двоичном блокноте отображается ноль, но при попытке записать это значение не ноль, это было значение 30 в шестнадцатеричном.

Как вы пишете конкретные данные, как это?

Это было полезно?

Решение

При открытии fstream используйте флаг ios :: binary , чтобы указать двоичный вывод. Дополнительную информацию можно найти здесь .

Что касается записи 0, когда вы видите 30 в шестнадцатеричном формате, вы пишете символ '0', а не двоичное число 0. Чтобы сделать это с помощью fstream, вы можете сделать что-то вроде:

my_fstream << 0;

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

Другие советы

Возможно, вам просто нужно что-то вроде этого, улучшайте по своему усмотрению:

ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
    char buf[1] = {0};
    file.write(buf, sizeof(buf));
    file.close();
}

Ссылки на более сложные решения и документацию уже размещены.

Взгляните на это: http://www.cplusplus.com/forum/general/11272/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top