#include #include typedef union { short data_short; char data_char[2]; } input_data; int main (int index, char** data){ if (index >2 || index == 1){ fprintf(stdout,"More or less arguments expected\n"); exit(-1); }else{ if ( *((*(data+1))+1) != 0 && *((*(data+1))+2) != 0 && *((*(data+1))+3) != 0 && *((*(data+1))+4) == 0){ input_data data_union; input_data data_union_inverted; for (int i = 0;i<4;i++){ if( ((*((*(data+1))+i) >= 48) && (*((*(data+1))+i) <=57) ) || ((*((*(data+1))+i) >= 97) && (*((*(data+1))+i) <=102) )){ continue; }else{ fprintf(stdout,"Bad Formatted\n"); exit(-2); } } char buf[3]; for (int i = 0;i<2;i++){ buf[0]= *((*(data+1))+(i*2)); buf[1]= *((*(data+1))+(i*2)+1); buf[2]= 0; sscanf (buf,"%hx",(short *)&(data_union.data_char[i])); data_union_inverted.data_char[1-i] = data_union.data_char[i] ; } for (int i = 0;i<2;i++){ fprintf(stdout,"0x%02x\n",data_union.data_char[i]); } fprintf(stdout,"Big Endian %d\n",data_union.data_short); fprintf(stdout,"Little Endian %d\n",data_union_inverted.data_short); }else{ fprintf(stdout,"Bad Input Lenght\n"); } } return 0; }