Dependendo da codificação usada para abrir o arquivo, você pode ver um comportamento diferente. O meu bloco de notas do Windows 7 permite abrir um arquivo em ANSI, UTF-8, Unicode ou Unicode big endian.
Eu testei esse problema com uma pequena imagem jpeg de 2x2 pixels criada com o gimp e abrindo e salvando o arquivo de imagem com codificação ANSI. Abrindo tanto a imagem original quanto a salva com um editor hexadecimal, vejo que todas as 00 seqüências (dois dígitos hexadecimais, caractere de controle NUL ) foram convertidos para 20 (caractere de espaço).
Substituindo de volta no editor hexadecimal, todos os 20 por 00 restauram o formato da imagem.
Eu pesquisei um pouco no Google e não encontrei referências que explicassem por que isso acontece. Apenas uma referência a um post que avisa sobre (link de cache do google, a página não está disponível).
Se você salvar / abrir o arquivo como UTF-8, ele ainda converterá caracteres NUL em espaços, mas também aumentará o tamanho do arquivo resultante devido a conversões de caracteres de byte único para seqüências de bytes múltiplos UTF-8. / p>
Se você salvar / abrir o arquivo como Unicode, parece que ele ainda converte caracteres NUL em espaços, mas também adiciona um byte ao início do arquivo, o BOM .