Zaprve bych se vam chtel omluvit, ze to trvalu tak dlouho, ale nebylo moc casu. Dale bych jen vytknul chovani nekterych lidi zde. Pripadali jste mi jak deti ze skolky, kterym kdyz ucitelka da nejakou hracku tak se kazdej predvadi, aby toho dosahl vic nez ostatni. Tuto kritiku si nemusite brat k srdci a urcite vas nechci prudit, ale chtelo by se to naucit chovat :).
Tak pokud si nekteri jeste vzpomenou na muj prvotni clanek o tom jak vytvorit mali prevodnik z ASCII do hexadecimalni soustavy (pro ty mene vzdelany hexa=6 decimal=10 => 16tkova soustava 8)) tak mam dobrou zpravu. Zde si muzete stahnout prevodnik z hexadecimalni soustavi do znakove sady ASCII. Znovu budeme potrebovat nejaky Ceckovy kompilator a to jest vse :).
*
/* Dekoder z hexadecimalni soustavy do desitkove soustavy
/*
/* Verze: 1.0.0
/*
/* Autor: BABCA SJES
/*
/* License: open source
*/
#include <stdio.h>
int z_hex(int hex_cislo){
/*funkce prevadi hexadecimalni cisla na normalni desitkovou
sadu*/
switch(hex_cislo){
case '0' : return (0);
case '1' : return (1);
case '2' : return (2);
case '3' : return (3);
case '4' : return (4);
case '5' : return (5);
case '6' : return (6);
case '7' : return (7);
case '8' : return (8);
case '9' : return (9);
case 'a' : return (10);
case 'A' : return (10);
case 'b' : return (11);
case 'B' : return (11);
case 'c' : return (12);
case 'C' : return (12);
case 'd' : return (13);
case 'D' : return (13);
case 'e' : return (14);
case 'E' : return (14);
case 'f' : return (15);
case 'F' : return (15);
default:
;
}
}
main(){
/*
/* Hlavni funce, prebira znaky ze vstupu mezery nahrazuje
mezerou.
/* Hex. cisla prevadi na ASCII znakovou sadu.
/* Maximalni velikost textu je dva tisice znaku.
*/
int i,j; /* int indexovych polozek*/
int polozky[2000]; /* int pole znaku
*/
int vstup, vstup2; /* int ASCII cisla
vstupujicich znaku */
i=0;j=0; /* Nulovani indexovych znaku */
printf("Zadejte hexadecimalni text (pr.: A1 65 .. ..):\n");
/*
/* Analiza vstupu, prebira vlozene hexadecimalni znaky
/* a prevadi je na ASCII znakovou sadu.
/* Tyto hodnoty pak uklada do pole.
*/
while ((vstup=getchar()) != '\n'){
i++;
if (vstup != ' '){
vstup2=getchar();
vstup=z_hex(vstup);
vstup2=z_hex(vstup2);
polozky[i]=((vstup*16)+vstup2);
/*vzorec pro vypocteni z 16 -> 10 */
/*printf("%c\t\t%d\n", polozky[i],i);*/
/* Debug */
}
else if (vstup == ' '){
polozky[i]=32;
/* Vloz do aktualni pozice mezeru */
/*printf("%c\t\t%d\n", polozky[i],i);*/
/* Debug */
}
}
polozky[i+1]=9999; /* Na konec pridej
ukoncovaci znak */
/* Cyklus pro vytisteni znaku */
while (1==1){
j++;
if (polozky[j] == 9999)
/* Kontrola ukocujiciho znaku */
break;
printf ("%c", polozky[j]);
/* Tiskne ASCII znak */
}
printf ("\n-_-_-_-_-_-_-Stisknete ENTER pro ukonceni
programu-_-_-_-_-_-_-");
getchar();
return(0);
/*neco pro stoury*/
}
Tento kod nejni zrovna nejlepsi, ale porad lepsi tohle naz dratem do oka :). Nejni tam kontrola spravnosti zadani tak pokud tam budete psat hovadinky typu "ah oj" tak se musite smirit s nasledkama :o). To jest nejspise vse. Tak zatim zdar :)
ps: Pokud mate nejake nejastnosti prectete si clanek Hexadecimalni soustava (part 1)
<$] Babca Sjes [$>