2016-12-04 5 views
0

HI im пытается записать в файл txt в двоичном формате.
теперь я писал этот код:C++ Запись двоичного файла в файл

#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{ 
    char* f = "abc"; 
    ofstream ofile("D:\\foobar.txt", ios_base::out | ios_base::binary); 
    ofile.write(f, sizeof(char*)); 
    return 0; 
} 

теперь пишет «а», но не в двоичной системе.
Может кто-нибудь, пожалуйста, скажите мне, как записать его в двоичном формате.

ответ

1

Прежде всего, вы пишете неправильный размер и можете выйти за пределы. Вместо этого используйте strlen, чтобы получить длину строки.

Во-вторых, подумайте о том, как буква в виде 'a' хранится в памяти компьютера. Он хранится в любой кодировке, используемой компилятором и операционной системой, что, скорее всего, является ASCII. Когда вы пишете это письмо в файл, он записывает значение, хранящееся в памяти, в файл, и если вы читаете файл с помощью программы, которая может расшифровать кодировку, она покажет вам письмо.

Я просто угадываю здесь, но я думаю, вы ожидали, что двоичный формат будет писать фактические и нули в виде текста. Ну вы do пишите и нули, а не как текст, а как отдельные биты. И когда все эти биты объединены в байты, вы получаете байты, поскольку они хранятся в памяти. Если вы посмотрите на файл в шестнадцатеричном редакторе, вы увидите фактические значения, и вы даже сможете найти программу, которая показывает фактические двоичные значения как единицы и нули.

+0

Это была моя теория. я думаю, моя книга не описывает вещи достаточно хорошо – Rokni

Смежные вопросы