68 lines
1.8 KiB
C
68 lines
1.8 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
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;
|
|
}
|