Friday 8 December 2017

Extended ascii codes binary options


Ascii vs. Arquivos Binários Introdução A maioria das pessoas classifica arquivos em duas categorias: arquivos binários e arquivos ASCII (texto). Você realmente trabalhou com ambos. Qualquer programa que você escreve (C / C / Perl / HTML) é quase certamente um arquivo ASCII. Um arquivo ASCII é definido como um arquivo que consiste de caracteres ASCII. Geralmente é criado usando um editor de texto como emacs, pico, vi, Notepad, etc. Existem editores mais extravagantes lá fora para escrever código, mas eles nem sempre podem salvá-lo como ASCII. Como um aparte, os arquivos de texto ASCII parecem muito americano-centric. Afinal, o A em ASCII significa American. No entanto, os EUA parecem dominar o mercado de software, e tão eficazmente, é um padrão internacional. Ciência da computação é tudo sobre a criação de boas abstrações. Às vezes tem êxito e às vezes não. As boas abstrações são todas sobre apresentar uma visão do mundo que o usuário pode usar. Uma das abstrações mais bem sucedidas é o editor de texto. Quando você está escrevendo um programa e digitando comentários, é difícil imaginar que essa informação não está sendo armazenada como caracteres. Claro, se alguém realmente disse Vamos, você realmente não acha que esses personagens são salvos como personagens, você não sabe sobre o código ASCII, então você concorda grudgingly que ASCII / arquivos de texto são realmente armazenados como 0s e 1s. Mas é difícil pensar assim. Arquivos ASCII são realmente armazenados como 1s e 0s. Mas o que significa dizer que seus arquivos armazenados como 1s e 0s são armazenados em discos, e os discos têm alguma maneira de representar 1s e 0s. Nós simplesmente chamamos de 1s e 0s porque isso também é uma abstração. Qualquer maneira é usada para armazenar os 0s e 1s em um disco, não nos importamos, desde que possamos pensar neles dessa maneira. Com efeito, os arquivos ASCII são basicamente arquivos binários, porque armazenam números binários. Ou seja, os arquivos ASCII armazenam 0s e 1s. A diferença entre ASCII e arquivos binários Um arquivo ASCII é um arquivo binário que armazena códigos ASCII. Lembre-se que um código ASCII é um código de 7 bits armazenado em um byte. Para ser mais específico, existem 128 códigos ASCII diferentes, o que significa que apenas 7 bits são necessários para representar um caractere ASCII. No entanto, uma vez que o tamanho mínimo viável é 1 byte, esses 7 bits são os 7 bits baixos de qualquer byte. O bit mais significativo é 0. Isso significa que, em qualquer arquivo ASCII, você está desperdiçando 1/8 dos bits. Em particular, o bit mais significativo de cada byte não está sendo usado. Embora os arquivos ASCII sejam arquivos binários, algumas pessoas os tratam como diferentes tipos de arquivos. Eu gosto de pensar em arquivos ASCII como tipos especiais de arquivos binários. Eles são arquivos binários onde cada byte é escrito em código ASCII. Um arquivo binário completo e geral não tem essas restrições. Qualquer um dos padrões de 256 bits pode ser usado em qualquer byte de um arquivo binário. Trabalhamos com arquivos binários o tempo todo. Executáveis, arquivos de objeto, arquivos de imagem, arquivos de som e muitos formatos de arquivo são arquivos binários. O que os torna binários é apenas o fato de que cada byte de um arquivo binário pode ser um dos padrões de 256 bits. Eles não estão restritos aos códigos ASCII. Exemplo de arquivos ASCII Suponha que você esteja editando um arquivo de texto com um editor de texto. Como você está usando um editor de texto, você está editando um arquivo ASCII. Neste novo arquivo, digite no cat. Isto é, as letras c, então a, então t. Em seguida, salve o arquivo e saia. O que acontece Por enquanto, não vamos nos preocupar com o mecanismo do que significa abrir um arquivo, modificá-lo e fechá-lo. Em vez disso, estavam preocupados com a codificação ASCII. Se você procurar uma tabela ASCII, você descobrirá o código ASCII para 0x63, 0x61, 0x74 (o 0x indica apenas os valores estão em hexadecimal, em vez de decimal / base 10). Heres como parece: Cada vez que você digita um caractere ASCII e salvá-lo, um byte inteiro é escrito que corresponde a esse personagem. Isso inclui pontuações, espaços e assim por diante. Recordo que uma vez um estudante usou 100 asteriscos em seus comentários, e estes asteriscos apareceram em toda parte. Cada asterisco usado até um byte no arquivo. Salvos milhares de bytes de seus arquivos, removendo comentários, principalmente os asteriscos, o que fez o arquivo olhar agradável, mas didnt adicionar à clareza. Assim, quando você digita um c, seu ser salvo como 0110 0011 para um arquivo. Agora às vezes um editor de texto lança em caracteres que você não pode esperar. Por exemplo, alguns editores insistem que cada linha termina com um caractere de nova linha. O que isso significa que eu fui perguntado uma vez por um aluno, o que acontece se o final da linha não tem um caractere de nova linha. Este estudante pensou que os arquivos foram salvos como duas dimensões (se o aluno percebeu ir ou não). Ele não sabia que era salvo como uma matriz unidimensional. Ele não percebeu que o caractere de nova linha define o fim da linha. Sem esse personagem de nova linha, você não chegou ao fim da linha. O único lugar onde um arquivo pode estar faltando uma nova linha no final da linha é a última linha. Alguns editores permitem que a última linha termine em algo além de um caractere de nova linha. Alguns editores adicionam uma nova linha no final de cada arquivo. Infelizmente, mesmo o caractere de nova linha não é universalmente padrão. É comum usar caracteres de nova linha em arquivos UNIX, mas no Windows, é comum usar dois caracteres para terminar cada linha (retorno de carro, newline, que é r e n, eu acredito). Por que dois caracteres quando apenas um é necessário Isso se remonta a impressoras. Nos velhos tempos, o tempo que demorou para uma impressora retornar ao início de uma linha foi igual ao tempo que demorou para digitar dois caracteres. Assim, dois caracteres foram colocados no arquivo para dar a impressora tempo para mover a bola de impressora para o início da linha. Esse fato não é tão importante. Sua principalmente trivia. A razão que eu trago-o é apenas no caso youve perguntou por que transferir arquivos para UNIX do Windows, por vezes, gera personagens engraçados. Editando arquivos binários Agora que você sabe que cada caractere digitado em um arquivo ASCII corresponde a um byte em um arquivo, você pode entender porque é difícil editar um arquivo binário. Se você quiser editar um arquivo binário, você realmente gostaria de editar bits individuais. Por exemplo, suponha que você queira escrever o padrão binário 1100 0011. Como você faria isso Você pode ser ingênuo, e digite o seguinte em um arquivo: Mas você deve saber, agora, que isso não é edição de bits individuais de um Arquivo. Se você digitar 1 e 0, você está realmente entrando em 0x49 e 0x48. Ou seja, você está entrando em 0100 1001 e 0100 1000 nos arquivos. Você está realmente (indiretamente) digitando 8 bits de cada vez. Mas, como eu suponho para editar arquivos binários, você exclama Às vezes eu vejo este dilema. Os alunos são instruídos a executar uma tarefa. Eles tentam fazer a tarefa, e mesmo que sua solução não faz sentido, eles ainda fazem isso. Se pediu para pensar sobre se esta solução realmente funciona, eles podem eventualmente razão que o seu errado, mas depois theyd perguntar Mas como faço para editar um arquivo binário Como faço para editar os bits individuais A resposta não é simples. Existem alguns programas que permitem que você digite 49, e ele traduz isso para um único byte, 0100 1001, em vez do código ASCII para 4 e 9. Você pode chamar esses programas editores hexadecimais. Infelizmente, estes podem não estar tão prontamente disponíveis. Não é muito difícil escrever um programa que lê em um arquivo ASCII que se parece com pares hexadecimais, mas depois converte-lo para um arquivo binário verdadeiro com os padrões de bits correspondentes. Ou seja, ele tem um arquivo que se parece com: e converte este arquivo ASCII para um arquivo binário que começa 0110 0011 (que é 63 em binário). Observe que esse arquivo é ASCII, o que significa que o que realmente é armazenado é o código ASCII para 6, 3, (espaço), a, 0 e assim por diante. Um programa pode ler este arquivo ASCII, em seguida, gerar o código binário apropriado e escrever isso em um arquivo. Assim, o arquivo ASCII pode conter 8 bytes (6 para os caracteres, 2 para os espaços) eo arquivo binário de saída conterá 3 bytes, um byte por par hexadecimal. Visualizando Arquivos Binários A maioria dos sistemas operacionais vem com algum programa que permite que você visualize um arquivo em formato binário. No entanto, ler 0s e 1s pode ser complicado, então eles normalmente traduzem para hexadecimal. Existem programas chamados hexdump que vêm com a distribuição Linux ou xxd. Embora a maioria das pessoas prefira exibir arquivos por meio de um editor de texto, você só poderá visualizar arquivos ASCII desta forma. A maioria dos editores de texto permite que você olhe para um arquivo binário (como um executável), mas inserir em coisas que parecem indicar caracteres de controle. Um bom hexdump tentará traduzir os pares hex para imprimir ASCII se ele puder. Isso é interessante porque você descobre que, por exemplo, executáveis, muitas partes do arquivo ainda estão escritas em ASCII. Portanto, este é um recurso muito útil para ter. Escrevendo Arquivos Binários, Parte 2 Por que as pessoas usam arquivos binários de qualquer maneira Uma razão é a compacidade. Por exemplo, suponha que você queria escrever o número 100000. Se você digitá-lo em ASCII, isso levaria 6 caracteres (que é 6 bytes). No entanto, se você representá-lo como binário não assinado, você pode escrevê-lo usando 4 bytes. ASCII é conveniente, porque tende a ser humano-legível, mas pode usar-se acima de muito espaço. Você pode representar informações de forma mais compacta usando arquivos binários. Por exemplo, uma coisa que você pode fazer é salvar um objeto em um arquivo. Este é um tipo de serialização. Para despejá-lo para um arquivo, use um método write (). Geralmente, você passa um ponteiro para o objeto e o número de bytes usados ​​para representar o objeto (use o operador sizeof para determinar isso) para o método write (). O método então despeja os bytes como ele aparece na memória em um arquivo. Em seguida, você pode recuperar as informações do arquivo e colocá-lo no objeto usando um método read () correspondente que normalmente leva um ponteiro para um objeto (e ele deve apontar para um objeto que tenha memória alocada, seja estaticamente ou dinamicamente Alocado) e o número de bytes para o objeto, e copia os bytes do arquivo para o objeto. Claro, você deve ter cuidado. Se você usar dois compiladores diferentes ou transferir o arquivo de um tipo de máquina para outro, esse processo pode não funcionar. Em particular, o objecto pode ser disposto de forma diferente. Isso pode ser tão simples como endianness, ou pode haver problemas com preenchimento. Esta maneira de salvar objetos para um arquivo é agradável e simples, mas pode não ser tudo o que portátil. Além disso, ele faz o equivalente a uma cópia superficial. Se o seu objeto contém ponteiros, ele gravará os endereços para o arquivo. Esses endereços provavelmente não terão sentido. Os endereços podem fazer sentido no momento em que um programa está sendo executado, mas se você sair e reiniciar, esses endereços podem mudar. É por isso que algumas pessoas inventam seu próprio formato para armazenar objetos: aumentar a portabilidade. Mas se você sabe que você não está armazenando objetos que contêm ponteiros, e você está lendo o arquivo no mesmo tipo de sistema de computador que você escreveu, e você está usando o mesmo compilador, ele deve funcionar. Esta é uma razão pela qual as pessoas às vezes preferem escrever ints, chars, etc. em vez de objetos inteiros. Eles tendem a ser um pouco mais portátil. Resumo Um arquivo ASCII é um arquivo binário que consiste de caracteres ASCII. Os caracteres ASCII são codificações de 7 bits armazenadas em um byte. Assim, cada byte de um arquivo ASCII tem seu bit mais significativo definido como 0. Pense em um arquivo ASCII como um tipo especial de arquivo binário. Um arquivo binário genérico usa todos os 8 bits. Cada byte de um arquivo binário pode ter os 256 padrões de bitstring totais (ao contrário de um arquivo ASCII que possui apenas 128 padrões de bitstring). Pode haver um tempo em que os arquivos de texto Unicode se tornam mais prevalentes. Mas por enquanto, os arquivos ASCII são o formato padrão para arquivos de texto. Texto ascii para conversor binário Para usar este texto ascii para conversor binário ferramenta, digite um valor ascii como ajuda para obter 01101000011001010110110001110000 e, em seguida, pressione o botão Converter. Esta é a maneira que você pode converter até 128 texto ascii para caracteres binários. Ascii ASCII é um sistema de codificação, conhecido como uma abreviação para o Código Padrão Americano para Intercâmbio de Informações. Projetado inicialmente para computadores antigos e impressoras de códigos telegráficos, foi baseado em 128 símbolos, incluindo 10 números, 26 letras de alfabeto inglês, um número de sinais de pontuação, etc. O sistema representa caracteres visíveis ou comandos para imprimir como iniciar, Completa, etc. As versões mais recentes dos sistemas ASCII são amplamente utilizadas em equipamentos de telecomunicações e computação. Hex Sistema Hex. Ou hexadecimal. É um sistema numérico de base 16. Este sistema de números é especialmente interessante porque no nosso sistema decimal casualmente usado temos apenas 10 dígitos para representar números. Como hex sistema tem 16 dígitos, o extra necessário 6 dígitos são representados pelas primeiras 6 letras do alfabeto inglês. Assim, os dígitos hexadecimais são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9 A, B, C, D, E, F. Este sistema numérico é o mais utilizado em matemática e tecnologias de informação. I. e. Em cores de programação html pode ser representado por um número hexadecimal de 6 dígitos. FFFFFF representa branco, 000000 representa preto e assim por diante. (011010000110010101101100011100001) 2 amor (01101100011011110111011001100101) 2 Verifique também a tabela de conversão Ascii binário como converter ascii texto para binário. A seguinte tabela ASCII contém caracteres de controle ASCII, caracteres ASCII imprimíveis e O conjunto de caracteres ASCII estendido ISO 8859-1, também chamado ISO Latin1 Código ASCII - A tabela ASCII estendida ASCII significa American Standard Code for Information Interchange. É um código de caracteres de 7 bits onde cada bit representa um caractere único. Nesta página você encontrará 8 bits, 256 caracteres, de acordo com ISO 8859-1 e Microsoft Windows Latin-1 caracteres aumentados, que está disponível em determinados programas, como o Microsoft Word. Caracteres de controle ASCII (código de caractere 0-31) Os primeiros 32 caracteres na tabela ASCII são códigos de controle não imprimíveis e são usados ​​para controlar periféricos, como impressoras. Opções de comparação binária Opções de caixa de diálogo Comparação Tamanho do bloco de comparação Tamanho mínimo do bloco de diferença, em bytes . Quanto maior o número, mais rápida e menos precisa a comparação. A comparação binária mais precisa é realizada quando o tamanho do bloco é 1 byte. No entanto, se você estiver comparando arquivos grandes, a comparação pode demorar tanto tempo que faria sentido sacrificar alguma precisão para um melhor desempenho. Número de bytes por linha Utilize este número Utilize o número especificado de bytes por linha. Altere o número de bytes por linha para ajustar sempre a tela atual ou a largura da área de impressão. Especifique o formato de valor de byte a ser usado na parte esquerda da exibição binária. Especifique a caixa de valor de byte a ser usada na parte esquerda da exibição binária. Esta opção Só efetua o formato hexadecimal. Use o conjunto de caracteres ASCII para exibir códigos de bytes. Exibir caracteres de controle (com valores 1. 31) enquanto exibe códigos ASCII. Caso contrário, exiba o arquivo. personagem. Exibir caracteres estendidos (com valores 128. 255) ao mostrar códigos ASCII. Caso contrário, exiba o arquivo. personagem. Utilize o conjunto de caracteres EBCDIC para exibir códigos de bytes. O Código Padrão Americano para Intercâmbio de Informações (ASCII) foi desenvolvido sob os auspícios de um comitê da American Standards Association, chamado comitê X3, por seu subcomitê X3.2 (mais tarde X3L2) E depois por esse grupo de trabalho dos subcomitês X3.2.4. O ASA se tornou o Instituto de Padrões dos Estados Unidos da América ou USASI e, em última instância, o American National Standards Institute. O subcomitê X3.2 projetou ASCII com base em sistemas de codificação de teleimpressores anteriores. Como outras codificações de caracteres, ASCII especifica uma correspondência entre padrões de bits digitais e símbolos de caracteres (ou seja, grafemas e caracteres de controle). Isso permite que os dispositivos digitais se comuniquem entre si e processem, armazenem e comuniquem informações orientadas a caracteres, como a linguagem escrita. Antes do desenvolvimento do ASCII, as codificações em uso incluíam 26 caracteres alfabéticos, 10 dígitos numéricos e de 11 a 25 símbolos gráficos especiais. Para incluir todos estes, e caracteres de controle compatíveis com o Comit Consultatif International Tlphonique et Tlgraphique (CCITT) International Telegraph Alphabet No. 2 (ITA2) padrão, Fieldata, e início EBCDIC, mais de 64 códigos foram necessários para ASCII. A comissão debateu a possibilidade de uma função de chave de mudança (como o código Baudot), que permitiria que mais de 64 códigos fossem representados por seis bits. Em um código deslocado, alguns códigos de caracteres determinam opções entre as opções para os seguintes códigos de caracteres. Ele permite a codificação compacta, mas é menos confiável para a transmissão de dados, um erro na transmissão do código de deslocamento geralmente torna uma parte longa da transmissão ilegível. O comitê de padrões decidiu contra mudança, e assim ASCII exigiu pelo menos um código de sete bits. O comitê considerou um código de oito bits, já que oito bits (octetos) permitiriam que dois padrões de quatro bits codificassem eficientemente dois dígitos com decimal codificado em binário. No entanto, exigiria toda a transmissão de dados para enviar oito bits, quando sete poderia ser suficiente. A comissão votou para usar um código de sete bits para minimizar os custos associados à transmissão de dados. Uma vez que a fita perfurada no momento poderia gravar oito bits em uma posição, também permitiu um bit de paridade para verificação de erros, se desejado. As máquinas de oito bits (com octetos como o tipo de dados nativo) que não usavam a verificação de paridade normalmente definem o oitavo bit como 0. O código em si foi padronizado de modo que a maioria dos códigos de controle estavam juntos e todos os códigos gráficos estavam juntos, identificação. As duas primeiras colunas (32 posições) foram reservadas para caracteres de controle. O personagem espacial tinha que vir antes de gráficos para facilitar a classificação, de modo que se tornou a posição 20hex pela mesma razão, muitos sinais especiais comumente usados ​​como separadores foram colocados antes dos dígitos. O comitê decidiu que era importante apoiar maiúsculas e minúsculas alfabetos de 64 caracteres, e optou por padrão ASCII para que ele poderia ser reduzido facilmente a um útil 64 caracteres conjunto de códigos gráficos. As letras minúsculas não foram, portanto, intercaladas com maiúsculas. Para manter as opções disponíveis para letras minúsculas e outros gráficos, os códigos especiais e numéricos foram dispostos antes das letras ea letra A foi colocada na posição 41hex para corresponder ao rascunho do padrão britânico correspondente. Os dígitos 09 foram dispostos de modo que correspondam a valores em binário prefixados com 011, tornando a conversão com decimal de código binário direto. Muitos dos caracteres não-alfanuméricos foram posicionados para corresponder à sua posição deslocada em máquinas de escrever. Assim, e foram colocados para corresponder a 3, 4 e 5 na coluna adjacente. Os parênteses não poderiam corresponder a 9 e 0, no entanto, porque o lugar correspondente a 0 foi tomado pelo caractere de espaço. Como muitas máquinas de escrever européias colocaram os parênteses com 8 e 9, as posições correspondentes foram escolhidas para os parênteses. O símbolo não foi usado na Europa continental e o comitê esperava que fosse substituído por um acentuado na variação francesa, de modo que o foi colocado na posição 40hex ao lado da letra A. Os códigos de controle considerados essenciais para a transmissão de dados foram o início da mensagem (SOM), fim de endereço (EOA), fim de mensagem (EOM), fim de transmissão (EOT), quem é você (WRU), você (RU), um controle de dispositivo reservado (DC0) ), E reconhecer (ACK). Estes foram posicionados para maximizar a distância Hamming entre os seus padrões de bits. Com os outros caracteres especiais e códigos de controle preenchidos, o ASCII foi publicado como ASA X3.4-1963, deixando 28 posições de código sem qualquer significado atribuído, reservado para futura padronização e um código de controle não atribuído. Houve algum debate no momento se deveria haver mais caracteres de controle em vez de alfabeto em minúsculas. A indecisão não durou muito tempo: em maio de 1963, o Grupo de Trabalho sobre o Novo Alfabeto Telegráfico do CCITT propôs atribuir caracteres em minúsculas às colunas 6 e 7 e a Organização Internacional de Normalização TC 97 SC 2 votou em outubro para incorporar a mudança em seu rascunho padrão. O grupo de tarefa X3.2.4 votou sua aprovação para a mudança para o ASCII em sua reunião de maio de 1963. A localização das letras minúsculas nas colunas 6 e 7 fez com que os caracteres diferissem no padrão de bits da caixa superior por um único bit, o que simplificou a correspondência de caracteres não-case-sensitive ea construção de teclados e impressoras. O X3 comitê fez outras mudanças, incluindo outros novos caracteres (a cinta e caracteres de linha vertical), renomeando alguns caracteres de controle (SOM tornou-se início do cabeçalho (SOH)) e movendo ou removendo outros (RU foi removido). O ASCII foi posteriormente actualizado como USASI X3.4-1967, depois USASI X3.4-1968, ANSI X3.4-1977 e, finalmente, ANSI X3.4-1986 (os dois primeiros são ocasionalmente retronamados ANSI X3.4-1967, E ANSI X3.4-1968). O comitê X3 também abordou como ASCII deve ser transmitido (bit menos significativo primeiro), e como ele deve ser gravado em fita perfurada. Eles propuseram um padrão de 9 faixas para fita magnética e tentaram lidar com algumas formas de formatos de cartões perfurados. ASCII próprio foi usado primeiramente comercialmente durante 1963 como um código do teleprinter de sete bocados para a rede americana dos telégrafos TWX do telefone (rede de TeletypeEchange). TWX usou originalmente o código de Baudot de cinco bits mais cedo, que também foi usado pelo sistema Telex de teleprinter concorrente. Bob Bemer introduziu características como a seqüência de escape. Seu colega britânico Hugh McGregor Ross ajudou a popularizar este trabalho de acordo com Bemer, de tal forma que o código que viria a ser ASCII foi primeiro chamado de Código Bemer-Ross na Europa. Por causa de seu trabalho extensivo em ASCII, Bemer foi chamado o pai de ASCII. Em 11 de março de 1968, o presidente dos EUA, Lyndon B. Johnson, ordenou que todos os computadores comprados pelo governo federal dos Estados Unidos apoiassem ASCII, afirmando: Eu também aprovou as recomendações da Secretaria de Comércio sobre padrões para registrar o Código Padrão para Intercâmbio de Informações sobre Fitas e fitas de papel quando são utilizados em operações de computador. Todos os computadores e configurações de equipamentos relacionados introduzidos no inventário do Governo Federal a partir de 1 de julho de 1969 devem ter a capacidade de usar o Código Padrão para Intercâmbio de Informações e os formatos prescritos pela fita magnética e padrões de fita de papel quando esses meios são usados. Outros organismos internacionais de normalização ratificaram codificações de caracteres como ISO / IEC 646 que são idênticas ou quase idênticas ao ASCII, com extensões para caracteres fora do alfabeto inglês e símbolos usados ​​fora dos Estados Unidos, como o símbolo da libra esterlina dos Estados Unidos ). Quase todos os países precisavam de uma versão adaptada do ASCII, uma vez que ASCII se adaptava às necessidades de apenas os EUA e alguns outros países. Por exemplo, o Canadá tinha sua própria versão que suportava caracteres franceses. Outras codificações adaptadas incluem ISCII (Índia), VISCII (Vietname) e YUSCII (Iugoslávia). Embora estas codificações são por vezes referido como ASCII, verdadeiro ASCII é definido estritamente apenas pelo padrão ANSI. ASCII foi incorporado no conjunto de caracteres Unicode como os primeiros 128 símbolos, de modo que os caracteres ASCII têm os mesmos códigos numéricos em ambos os conjuntos. Isso permite UTF-8 para ser compatível com ASCII, uma vantagem significativa. ASCII reserva os primeiros 32 códigos (números 031 decimal) para caracteres de controle: códigos originalmente destinados a não representar informações imprimíveis, mas sim a dispositivos de controle (como impressoras) que fazem uso de ASCII ou para fornecer meta-informações sobre fluxos de dados como Como aqueles armazenados em fita magnética. Por exemplo, o caractere 10 representa a função de alimentação de linha (o que faz com que uma impressora avance seu papel) eo caractere 8 representa espaço de retorno. RFC 2822 refere-se a caracteres de controle que não incluem retorno de carro, alimentação de linha ou espaço em branco como não-espaços de controle de caracteres. Exceto para os caracteres de controle que prescrevem formatação orientada a linha elementar, ASCII não define qualquer mecanismo para descrever a estrutura ou a aparência do texto dentro de um documento. Outros esquemas, como linguagens de marcação, página de endereços e layout e formatação de documentos. O padrão ASCII original usou apenas frases descritivas curtas para cada caractere de controle. A ambigüidade que isso causou foi, por vezes, intencional (onde um caractere seria usado de forma ligeiramente diferente em um terminal link que em um fluxo de dados) e às vezes acidental (como o que significa apagar). Provavelmente o dispositivo mais influente na interpretação desses personagens foi o Teletype Model 33 ASR, que era um terminal de impressão com uma opção de leitor / punção de fita de papel disponível. A fita de papel era um meio muito popular para o armazenamento de programas de longo prazo até a década de 1980, menos dispendiosa e, em alguns aspectos, menos frágil do que a fita magnética. Em particular, as atribuições de máquinas do Modelo 33 do Teletype para os códigos 17 (Control-Q, DC1, também conhecido como XON), 19 (Control-S, DC3, também conhecido como XOFF) e 127 (Delete) tornaram-se padrões de facto. Como o keytop para a chave O também mostrou um símbolo de seta para a esquerda (de ASCII-1963, que tinha esse caractere em vez de sublinhado), um uso incompatível do código 15 (Control-O, Shift In) interpretado como excluir caractere anterior também foi Adotado por muitos sistemas de compartilhamento de tempo precoce, mas eventualmente se tornou negligenciado. O uso de Control-S (XOFF, uma abreviação para transmitir off) como um sinal de handshaking advertindo um emissor para parar a transmissão por causa do estouro iminente, e Control-Q (XON, transmitir em) para retomar o envio, persiste até hoje em muitos Como uma técnica de controle de saída manual. Em alguns sistemas Control-S retém seu significado, mas Control-Q é substituído por um segundo Control-S para retomar a saída. Código 127 é nomeado oficialmente excluir, mas o rótulo Teletype foi rubout. Uma vez que o padrão original não deu uma interpretação detalhada para a maioria dos códigos de controle, as interpretações deste código variaram. O significado original do Teletype, ea intenção do padrão, era torná-lo um personagem ignorado, o mesmo que NUL (todos os zeros). Isso era útil especificamente para fita de papel, porque perfurar o padrão de bits de todos os outros em cima de uma marca existente iria obliterar. As fitas concebidas para serem editadas manualmente podem até ser produzidas com espaços de NUL adicionais (fita virgem) de modo que um bloco de caracteres possa ser eliminado e, em seguida, recolocados no espaço vazio. À medida que os terminais de vídeo começaram a substituir os de impressão, o valor do caractere de fricção foi perdido. Os sistemas DEC, por exemplo, interpretaram Delete para significar remover o caractere antes do cursor e essa interpretação também se tornou comum em sistemas Unix. A maioria dos outros sistemas utilizados Backspace para que o significado e usado Excluir para significar remover o caractere no cursor. Essa última interpretação é a mais comum agora. Muitos mais dos códigos de controle receberam significados bastante diferentes dos seus originais. O caractere de escape (ESC, código 27), por exemplo, destinava-se originalmente a permitir o envio de outros caracteres de controle como literais em vez de invocar seu significado. Este é o mesmo significado de escape encontrado em codificações de URL, cadeias de caracteres de linguagem C e outros sistemas em que determinados caracteres têm um significado reservado. Ao longo do tempo, esse significado foi cooptado e eventualmente mudado. No uso moderno, um ESC enviado para o terminal geralmente indica o início de uma seqüência de comandos, geralmente sob a forma de um chamado código de escape ANSI (ou, mais propriamente, um Introduzir Sequência de Controle) começando com ESC seguido de um (esquerda - bracket). Um ESC enviado a partir do terminal é mais frequentemente usado como um out-of-band caractere usado para encerrar uma operação, como nos editores de texto TECO e vi. Na interface gráfica do usuário (GUI) e sistemas de janelas, ESC geralmente faz com que um aplicativo abortar sua operação atual ou para sair (terminar) completamente. A ambiguidade inerente de muitos caracteres de controle, combinada com seu uso histórico, criou problemas ao transferir arquivos de texto sem formatação entre sistemas. O melhor exemplo disso é o problema de nova linha em vários sistemas operacionais. As máquinas de teletipo exigem que uma linha de texto seja terminada com o retorno do carro (que move o cabeçote de impressão para o início da linha) e a alimentação de linha (que avança a linha de papel sem mover o cabeçote de impressão). O nome Carriage Return vem do fato de que em uma máquina de escrever manual a carruagem segurando o papel se moveu enquanto a posição onde as teclas atingiu a fita permaneceu estacionária. O carro inteiro teve que ser empurrado (retornado) para a direita, a fim de posicionar a margem esquerda do papel para a próxima linha. Os sistemas operacionais DEC (OS / 8, RT-11, RSX-11, RSTS, TOPS-10, etc.) utilizaram ambos os caracteres para marcar o fim de uma linha, de modo que o dispositivo de console (originalmente Teletype) funcionasse. No momento em que os chamados TTYs de vidro (chamados mais tarde de CRTs ou terminais) surgiram, a convenção estava tão bem estabelecida que a compatibilidade com versões anteriores exigia a continuação da convenção. Quando Gary Kildall clonou a RT-11 para criar CP / M, seguiu a convenção DEC estabelecida. Até a introdução do PC-DOS em 1981, a IBM não tinha nenhuma mão nisso, porque seus sistemas operacionais de 1970 usavam EBCDIC em vez de ASCII e eram orientados para a entrada de cartões de ponta e impressoras de linha em que o conceito de retorno de carro não tinha sentido. IBMs PC-DOS (também comercializado como MS-DOS pela Microsoft) herdou a convenção em virtude de ser um clone do CP / M, eo Windows herdou do MS-DOS. Infelizmente, exigir dois caracteres para marcar o fim de uma linha introduz complexidade desnecessária e perguntas sobre como interpretar cada caractere quando encontrado sozinho. Para simplificar, arquivos de texto simples em sistemas Multics, Unix e Unix, e sistemas Amiga usam alimentação de linha (LF) como um terminador de linha. O Macintosh OS original, por outro lado, usado retorno de carro (CR) sozinho como um terminador de linha no entanto, uma vez que a Apple substituiu-o com o sistema operacional OS X Unix-baseado, eles agora usam linha de alimentação (LF) também. A transmissão de texto pela Internet, para protocolos como E-mail e a World Wide Web, utiliza ambos os caracteres. Sistemas operacionais, como alguns sistemas operacionais DEC mais antigos, juntamente com CP / M, acompanharam o comprimento do arquivo somente em unidades de blocos de disco e usaram Control-Z (SUB) para marcar o final do texto real no arquivo. Por esta razão, EOF ou fim de arquivo, foi usado coloquialmente e convencionalmente como um acrônimo de três letras (TLA) para Control-Z em vez de SUBstitute. Por uma variedade de razões, o código de fim de texto, ETX aka Control-C, era inadequado e usar Z como o código de controle para terminar um arquivo é análogo ao que termina o alfabeto, um auxílio mnemônico muito conveniente. Na biblioteca C e nas convenções Unix, o caractere nulo é usado para finalizar strings de texto, tais strings com terminação nula podem ser conhecidas em abreviatura como ASCIZ ou ASCIIZ, onde aqui Z significa zero. Os códigos 0 a 31 e 127 (decimal) são caracteres de controle não imprimíveis. O código 32 (decimal) é um caractere de espaçamento não-imprimível. Os códigos 33 a 126 (decimal) são caracteres gráficos imprimíveis.

No comments:

Post a Comment