Запись двоичных данных
Вопрос
Я пишу в двоичный файл, используя 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/ р>