AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1537462
Accepted
Arctiic
Arctiic
Asked: 2020-04-01 02:13:14 +0800 CST2020-04-01 02:13:14 +0800 CST 2020-04-01 02:13:14 +0800 CST

Qual é o propósito desses caracteres `NUL`?

  • 772

Isso é puramente por curiosidade acadêmica, mas muitas vezes encontrei arquivos no Windows (Win10Pro64) e também no Android que não são ofuscados, mas contêm vários NULcaracteres entre cada caractere relevante real, dificultando a leitura como estão no Windows (pelo menos no Android, o aplicativo explorador que uso - X-plore - parece remover automaticamente ao iniciar como texto no modo de edição). Aqui está um exemplo: Captura de tela

text-formatting syntax
  • 3 3 respostas
  • 7324 Views

3 respostas

  • Voted
  1. Best Answer
    Attie
    2020-04-01T02:45:56+08:002020-04-01T02:45:56+08:00

    Este é um arquivo binário que contém caracteres fora do conjunto de caracteres ASCII imprimíveis .

    Como esses caracteres são " não imprimíveis ", o Notepad++ os exibe como um bloco descritivo. Você provavelmente verá outros, conforme mostrado abaixo. Aqui você vê todos os valores do binário 0 / 0x00a 255 / 0xFF(que é o maior valor que pode ser armazenado em um único byte).

    todos os valores binários de 0 a 255 exibidos pelo notepad++

    Os valores mostrados nas linhas 1, 2 e 3 são normalmente chamados de " Caracteres de controle " e são usados ​​para influenciar o terminal, posicionamento do cursor, etc... a NULtem o valor 0 / 0x00. O BScaractere de controle é " Backspace " e instrui o aplicativo a remover um caractere e mover o cursor um espaço para trás. Digno de nota são os caracteres " ausentes " ou invisíveis entre BSe VT... aqui estão os caracteres " Horizon Tab " e " Line Feed " - o primeiro é bastante auto-explicativo, e o último fará o texto fluir para o próximo linha.

    Nas linhas 4 e 5 você pode ver todo o conjunto de caracteres ASCII imprimíveis. Um espaço ( ) tem os valores binários 32 / 0x20, um ponto de exclamação tem os valores 33 / 0x21, etc... A caixa quadrada engraçada no final da linha 5 é o DELcaractere de controle - 127 / 0x7F.

    Todos os valores incluindo e acima de 128 são " ASCII estendido " ou também não imprimíveis, e são exibidos a partir da linha 6 como seu valor bruto - por exemplo: x80. Não há uma boa maneira de determinar como interpretá-los - alguns aplicativos DOS usaram alguns desses caracteres para produzir quadros em torno de " janelas ", caixas ou áreas no terminal .

    captura de tela mc

    Para obter mais informações, consulte a seção " Grupos de caracteres " da página wiki.

    Visualizando o mesmo arquivo acima em um " Editor Hex ", você normalmente verá os valores binários brutos ao lado da representação ASCII.

    editor hexadecimal


    Quando o arquivo contém dados diferentes de texto simples (por exemplo: é um aplicativo ou outro arquivo binário), você verá muitos caracteres não impressos, porque eles nunca foram destinados ao consumo humano... Nesses arquivos, o os dados são dispostos em binário, geralmente seguindo uma estrutura ou formato estrito. Em alguns casos, os dados representam grandes números (concatenando um número de bytes juntos), em outros casos, eles podem representar " código de máquina " ou instruções brutas que são apresentadas diretamente a um processador.

    Você pode ver strings dentro desses arquivos binários, mas isso é mais " por acidente " do que de propósito - o próprio aplicativo precisa saber o que imprimir na tela quando você vir uma mensagem, e será isso.

    Existem algumas maneiras comuns pelas quais as strings são codificadas em arquivos binários.

    1. Corda C

    Esse formato usa caracteres de 8 bits e termina a string com um NULcaractere. A string fica imediatamente visível no arquivo, conforme mostrado abaixo - observe a terminação NUL.

    Exemplo de string C

    2. UTF-16

    Este formato utiliza caracteres de 16 bits (ou seja: dois bytes concatenados) e pode representar uma parte dos pontos de código descritos pelo Unicode . Aqui, você vê que a string está um pouco visível, se você ler entre os NULcaracteres... Este formato é muito comum em aplicativos que têm como alvo o Windows.

    Você pode ver a string Logical Disksna segunda linha?

    Exemplo UTF-16


    Arquivos binários também podem armazenar outros recursos dentro deles - por exemplo, imagens, sons, XML, JSON, arquivos, etc... o aplicativo pode então extrair os recursos para o disco em tempo de execução, se necessário, ou pode frequentemente processá-los diretamente da memória.

    Muitas vezes é possível extrair esses recursos usando ferramentas de forma automatizada, mas em alguns casos o arquivo não é projetado para um padrão aberto/comum, sendo necessária alguma intervenção manual.

    • 7
  2. LPChip
    2020-04-01T02:34:16+08:002020-04-01T02:34:16+08:00

    Ao criar um arquivo para armazenar dados, você pode armazenar uma série de bytes. 1 byte é qualquer número entre 0 e 255. Em muitos formatos de arquivo, basta usar qualquer número entre 0 e 255 para armazenar dados.

    Mas, à medida que os sistemas se tornam mais complexos e avançados, os desenvolvedores às vezes precisam armazenar números muito maiores que 255. 2 bytes = 256*256 = 65535, 4 bytes = 256*256*256*256 = 4294967296. Portanto, combinando 4 bytes, pode-se armazenar valores de 0 a 4294967295.

    Você pode até combinar 8 ou mais bytes para formar um número, o que geralmente acontece em aplicativos de 64 bits, nos quais você precisa de 64 bits (8x8 bytes).

    Como os números armazenados geralmente são baixos, a maioria dos bytes é 0, também conhecido como NUL. Portanto, em um arquivo, você vê muitos NUL porque são todos valores baixos em construções de 64 bits.

    Por que alguém não otimizaria o arquivo? Porque a maioria dos programadores usa funções que armazenam os dados para eles, e eles mantêm todos os cenários em mente, incluindo o armazenamento de grandes números.

    • 2
  3. Rémy
    2020-04-01T02:31:07+08:002020-04-01T02:31:07+08:00

    Essa é uma convenção muito popular para armazenar strings: geralmente os programas saberão a localização do início da string e saberão que a string terminou porque o caractere NUL(ou NULLou \0) foi encontrado.

    Se você comparar isso com o CSV, poderá considerá-lo como a vírgula que separa cada coluna. Exceto que aqui é um caractere especial que não pode ser digitado nem impresso e não tem outra utilidade senão delimitar finais de string.

    Você pode pensar que isso é frágil e é de fato uma causa de inúmeros problemas de segurança. Mas ainda hoje, muitas strings ainda são delimitadas dessa maneira.

    No entanto, na captura de tela, isso pode ter um significado diferente, específico do aplicativo que você está usando. No geral, os dados binários não são feitos para serem lidos com um editor de texto :)

    • 1

relate perguntas

  • Caixas desenhadas à mão

  • O script não é mais executado após a atualização para o python 3.7.3

  • Perda de formatação ao colar de alguns aplicativos não MS para aplicativos do MS Office 365

  • MS Word – como inserir uma coluna na borda direita de cada página

  • Como posso adicionar uma margem (vertical) (ou seja, preenchimento) entre o cabeçalho da página e o conteúdo na segunda página com o cabeçalho da tabela de repetição nos relatórios do Telerik

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve