Reti costruito secondo esercizio sulle architetture big e little endian
This commit is contained in:
67
2.little_big_endian/check_architecture.c
Normal file
67
2.little_big_endian/check_architecture.c
Normal file
@@ -0,0 +1,67 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user