Tu peux faire les conversions string/decimal/hexa si ça te plait, mais tu peux t'en passer. Pour l'affichage il te suffit d'afficher la valeur sous forme de nombre hexadécimal de chaque case de ton tableau :
#include <stdio.h>
int main(void){
char tab[5]= "hello";
int i = 0;
for(i=0;i<5;i++){
printf("\\x%x",tab[i]);
}
return 0 ;
}
ce qui donne :
$ ./ctest
\x68\x65\x6c\x6c\x6f
Et pour lire une chaîne tu fais l'opération inverse avec le scanf :
#include <stdio.h>
#include <stdlib.h>
int main(void){
int tab[5]={0};
int i = 0;
for(i=0;i<4;i++){
scanf("\\x%x",&tab[i]);
printf("lu : %u\n", tab[i]);
}
return 0 ;
}
$ ./rtet <<< "\\x12\\x45\\x12"
lu : 18
lu : 69
lu : 18
lu : 0