Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Crazydani

Biblioteca Ascii

Recommended Posts

Ae galera, é o seguinte!Estou fazendo um Sistema tolerante a falhas e queria saber se tem alguma biblioteca com a tabela ascii... tô meio perdida prá fazer a conversão de uma mensagem em codificação ascii. Depois ainda tenho que transformar para binário e fazer os bit´s de paridade...Com uma biblioteca ia ficar bem mais fácil... ou alguma outra idéia pessoal?Tô tentando fazer uma matriz com os códigos da tabela, mas não tá saindo nada!!!Obrigada desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola CrazyDani.

 

Não entendi sua pergunta direito. É para fazer a conversão de uma mensagem que já esteja em codigo ASCII para outro tipo ou para converter uma mensagem texto para ASCII. E qual seu compilador?

Se for o segundo caso, converter uma mensagem para codigo ascii, consegui fazer uma função que converte os caracteres de uma frase para Ascii, imprimindo na tela um de cada vez. Aqui está:

/* srtlen(s) * Função que retorna o tamanho da cadeia s */strlen(s)char *s;{int n;for (n=0; *s !='\0'; s++,n++);return (n);}/* Função que retorna codigo ascii de cada caractere de uma frase */strasci(matriz) // recebe endereço da matriz como argumentochar matriz[];{char d;for (d=0; d<strlen(matriz); d++)printf("Endereço=%5u caractere='%c' cod.asci= %d\n",(matriz+d),*(matriz+d),*(matriz+d));}

É preciso escrever as duas funções, pois a strasci() necessita da strlen() para saber a quantidade de caracteres.

Agora ai vai um exemplo de uso da função strasci():

/* Versão para Linux */#include <stdio.h>main (){ // Declaração de função gets() char *gets(char *s); /* Função gets() do compilador gcc do Linux */ char frase[81]; // limitando o numero de caracteres da frase  printf("Digite uma frase: "); gets(frase); strasci(frase); /* passando o endereço da matriz frase como  argumento para a função strasci() */}
Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer os números ASCII?

 

Então basta criar um programa qualquer com:

 

#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int Ascii=0;
FILE*Arquivo=fopen("Arquivo das teclas Ascii","w");
while(Ascii<=256)
{
fprintf(Arquivo,"%c = %d\n",Ascii,Ascii);
Ascii++;
}
fprintf(Arquivo,"Criado por DAVIFN!");
fclose(Arquivo);
if(MessageBox(NULL,"Abrir o arquivo das teclas ASCII?","DAVIFN",MB_YESNO)==6){
if(ShellExecute(NULL,"open","notepad.exe","Arquivo das teclas Ascii",NULL,SW_NORMAL)==NULL){}
MessageBox(NULL,"Arquivo aberto com sucesso!\n\n Criado por DAVIFN!","DAVIFN",MB_OK);}
}

 

Nem sei se funciona isto, criei agora.

 

Espero ter ajudado alguém.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suas duvidas não são evidentes, para uma melhor resposta aconselho que as especifique.

Quanto ao bit de paridade é extremamente fácil de obtê-lo.

 

#define getbit(_by, _pos)    ((_by >> _pos) & 0x01)
//...
int par;
char c;
//..
par = getbit(c, 7);

 

Com apenas um loop simples e getbit é possível converter um caractere para o sistema binário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É preciso definir melhor seu problema.

 

C pode ou não usar ASCII como codificação de texto.

 

Mas por padrão é o ASCII, para outros tipos de codificação (unicode: UTF-7, UTF-8, UTF-16, UTF-32, UCS, UCS-4, SCSU e Punycode), faz se necessário o uso de outros tipos e funções, como char16_t e char32_t.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. O padrão não é ASCII. Não existe padrão em C. As únicas imposições feitas pela linguagem são listadas (C11) em 5.2.1.2:

 

(...)

 

— The basic character set shall be present and each character shall be encoded as a single byte.

— The presence, meaning, and representation of any additional members is locale specific.

— A multibyte character set may have a state-dependent encoding, wherein each sequence of multibyte characters begins in an initial shift state and enters other locale-specific shift states when specific multibyte characters are encountered in the sequence. While in the initial shift state, all single-byte characters retain their usual interpretation and do not alter the shift state. The interpretation for subsequent bytes in the sequence is a function of the current shift state.

— A byte with all bits zero shall be interpreted as a null character independent of shift

state. Such a byte shall not occur as part of any other multibyte character.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. O padrão não é ASCII. Não existe padrão em C. As únicas imposições feitas pela linguagem são listadas (C11) em 5.2.1.2:

Mas está sobre os domínios da norma ISO/IEC 646.

Com a seguinte exceção:

17) The trigraph sequences enable the input of characters that are not defined in the Invariant Code Set as

described in ISO/IEC 646, which is a subset of the seven-bit US ASCII code set.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O rodapé citado não afirma que ASCII, ou qualquer subconjunto dela, é o padrão de C.

 

Leia novamente: as sequências de trigraphs (definidas em 5.2.1.1) permitem representar caracteres que não são definidos no subconjunto de ASCII definido pela ISO/IEC 646.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.