Запись двоичных данных - PullRequest
       17

Запись двоичных данных

1 голос
/ 09 сентября 2009

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

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

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

Ответы [ 3 ]

3 голосов
/ 09 сентября 2009

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

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

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

1 голос
/ 09 сентября 2009

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

1 голос
/ 09 сентября 2009

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

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

my_fstream << 0;

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

...