Pergunta

Estou escrevendo para arquivo binário usando fstream e quando abrir o arquivo usando o sinalizador de binário.

Eu precisava escrever algum texto como binário, que uma gravação simples fez o truque. O problema é que eu preciso também para gravação (como mostrado na hexadecimal) 0. O valor quando aberto no bloco de notas binário é mostrado zero, mas quando tentou escrever este o valor não zero, que foi um valor de 30 em hexadecimal.

Como você gravar dados específicos como este?

Foi útil?

Solução

Quando você abre o uso fstream a bandeira ios::binary para especificar saída binária. Mais informações podem ser encontradas aqui .

Como para escrever 0, quando você vê 30 em hexadecimal que você está escrevendo o caráter '0', não o número binário 0. Para fazer isso com um fstream você pode fazer algo como:

my_fstream << 0;

Tenha em mente os dados binários 0 não tem representação textual, então você não será capaz de lê-lo no bloco de notas como você seria capaz de ler o caractere '0'.

Outras dicas

Você provavelmente só precisa de algo assim, melhorar como você vê o ajuste:

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

Os links para soluções mais sofisticadas e documentação já foram publicadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top