Texto simples é binário.
Quando você escreve H
um disco rígido, o cabeçote de gravação não grava duas linhas verticais e uma horizontal no prato, codifica magneticamente os bits 01001000
1 no prato.
A partir daí, deve ser óbvio que o armazenamento de dados de texto sem formatação ocupa exatamente a mesma quantidade de espaço que o armazenamento de dados binários.
Mas o texto simples é apenas um formato binário em 2
O texto sem formatação pode ser transformado reversivelmente em outros formatos binários. Uma transformação comum é a compactação, que geralmente resulta em uma representação mais compacta, significando menos bits usados para representar a mesma informação.
Dependendo do que você estiver usando o texto sem formatação para representar, você poderá usar diferentes formatos binários para representar as mesmas informações. Isso pode usar mais espaço, pode usar menos.
Por exemplo, os números 5
e 1234567
podem ser representados em texto sem formatação usando caracteres de dígito, resultando nessas seqüências de bits no disco 3 :
00110101 00000000
00110001 00110010 00110011 00110100 00110101 00110110 00110111 00000000
Como alternativa, você pode usar o complemento de dois bits de 32 bits :
00000000 00000000 00000000 00000101
00000000 00010010 11010110 10000111
Qual é uma representação menos compacta de 5
, mas uma representação mais compacta de 1234567
.
E há um número literalmente infinito de outras representações que teriam níveis variados de compacidade e flexibilidade, embora, na prática, muito menos do que muitas representações sejam realmente usadas.
1 Assumindo UTF-8. A sequência exata de bits para um caractere depende da codificação específica que você está usando.
2 Ou, na verdade, vários formatos, dadas as várias codificações .
3 Se você está se perguntando quais são esses oito zeros nas extremidades, bem, precisa de uma maneira de saber quanto tempo os dados têm. As opções basicamente se resumem a um marcador (usei isso, via um byte nulo), espaço dedicado ao armazenamento do comprimento (Pascal usou um byte para armazenar o comprimento de uma string) ou um tamanho fixo (usado no complemento subsequente dos dois) exemplo).