Conversão de Hexa para Ascii

1. Conversão de Hexa para Ascii

Gabriel Camargos
arcanjo_mg

(usa Debian)

Enviado em 08/02/2007 - 10:41h

Galera, tive a necessidade de uma função que converte-se uma string que representa Hexa para ascii, como não encontrei nenhuma dessa maneira eu implementei-a, está funcionando como eu queria, pensei em postar aqui para que talvez alguem que tenha uma sugestão ajude a melhorá-la pois esta pode ser util para nós futuramente:

unsigned char* ucConverteHexaParaAscii(unsigned char* entrada)
{
unsigned char *copia, *resultado;
int tam = 0, i = 0, j = 0;
char c;

tam = strlen((const char*) entrada);

if( tam%2 != 0 )
{
copia = (unsigned char*) malloc(sizeof(char)*(tam+2));
copia[0] = '0';
for(i = 0; i < tam; i++){
copia[i+1] = tolower(entrada[i]);
}
copia[tam+1] = '{TEXTO}';
}
else{
copia = (unsigned char*) malloc(sizeof(char)*(tam+1));
for(i = 0; i < tam; i++){
copia[i] = tolower(entrada[i]);
}
copia[tam] = '{TEXTO}';
}

tam = strlen((const char*) copia);

//printf("\nString: %s\nTamanho: %d\n", entrada, tam);

resultado = (unsigned char*) malloc(sizeof(char)*(tam+1));

for(i = 0; i < tam; i++)
{
switch(copia[i])
{
case '0':
c = 0;
break;

case '1':
c = 1;
break;

case '2':
c = 2;
break;

case '3':
c = 3;
break;

case '4':
c = 4;
break;

case '5':
c = 5;
break;

case '6':
c = 6;
break;

case '7':
c = 7;
break;

case '8':
c = 8;
break;

case '9':
c = 9;
break;

case 'a':
c = 10;
break;

case 'b':
c = 11;
break;

case 'c':
c = 12;
break;

case 'd':
c = 13;
break;

case 'e':
c = 14;
break;

case 'f':
c = 15;
break;

default:
return (NULL); // caso nao seja um hexa o mesmo deve ser tratado.
break;
}

if(i%2 == 0){
resultado[j] = c;
}
else{
resultado[j] = resultado[j]*16 + c;
j++;
}
}

resultado[j] = '{TEXTO}';

//tam = strlen(resultado);
//printf("\nString: %s\nTamanho: %d\n", resultado, tam);

free(copia);

return (resultado);
}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts