Hola
necesitaba pasar unos datos provenientes de un transponder (rfid) que me enviaba los datos en hex (ocupando un byte por cada hex enviado), y quería achicar un poco todo eso, así que hice estas funciones. si alguien conoce una forma menos aparatosa de hacerlo le agradecería lo comente
char conversion_alta(int e){
if(RxTransp[e]==48) return (0x0) ;//primer 0
if(RxTransp[e]==49) return (0x10) ;//primer 1
if(RxTransp[e]==50) return (0x20) ;//primer 2
if(RxTransp[e]==51) return (0x30) ;//primer 3
if(RxTransp[e]==52) return (0x40) ;//primer 4
if(RxTransp[e]==53) return (0x50) ;//primer 5
if(RxTransp[e]==54) return (0x60) ;//primer 6
if(RxTransp[e]==55) return (0x70) ;//primer 7
if(RxTransp[e]==56) return (0x80) ;//primer 8
if(RxTransp[e]==57) return (0x90) ;//primer 9
//per saltum
if(RxTransp[e]==65) return (0xA0) ;//primer A
if(RxTransp[e]==66) return (0xB0) ;//primer B
if(RxTransp[e]==67) return (0xC0) ;//primer C
if(RxTransp[e]==68) return (0xD0) ;//primer D
if(RxTransp[e]==69) return (0xE0) ;//primer E
if(RxTransp[e]==70) return (0xF0) ;//primer F
return (0x0) ;
}
char conversion_baja(int e){
if(RxTransp[e]==48) return (0x00) ;//primer 0
if(RxTransp[e]==49) return (0x01) ;//primer 1
if(RxTransp[e]==50) return (0x02) ;//primer 2
if(RxTransp[e]==51) return (0x03) ;//primer 3
if(RxTransp[e]==52) return (0x04) ;//primer 4
if(RxTransp[e]==53) return (0x05) ;//primer 5
if(RxTransp[e]==54) return (0x06) ;//primer 6
if(RxTransp[e]==55) return (0x07) ;//primer 7
if(RxTransp[e]==56) return (0x08) ;//primer 8
if(RxTransp[e]==57) return (0x09) ;//primer 9
//per saltum
if(RxTransp[e]==65) return (0x0A) ;//primer A
if(RxTransp[e]==66) return (0x0B) ;//primer B
if(RxTransp[e]==67) return (0x0C) ;//primer C
if(RxTransp[e]==68) return (0x0D) ;//primer D
if(RxTransp[e]==69) return (0x0E) ;//primer E
if(RxTransp[e]==70) return (0x0F) ;//primer F
return (0x0) ;
}
void convertir_tag(void){
char tag_alto=0, tag_bajo=0;
i=1;
tag_alto=conversion_alta(i);
i++;
tag_bajo=conversion_baja(i);
tag[0]=(tag_alto + tag_bajo);
i++;
tag_alto=conversion_alta(i);
i++;
tag_bajo=conversion_baja(i);
tag[1]=(tag_alto + tag_bajo);
i++;
tag_alto=conversion_alta(i);
i++;
tag_bajo=conversion_baja(i);
tag[2]=(tag_alto + tag_bajo);
i++;
tag_alto=conversion_alta(i);
i++;
tag_bajo=conversion_baja(i);
tag[3]=(tag_alto + tag_bajo);
i++;
tag_alto=conversion_alta(i);
i++;
tag_bajo=conversion_baja(i);
tag[4]=(tag_alto + tag_bajo);
//fprintf(RS232,"\r\nT %X%X%X%X%X",tag[0],tag[1],tag[2],tag[3],tag[4]);
}