Reti costruito secondo esercizio sulle architetture big e little endian

This commit is contained in:
2014-03-17 16:39:48 +01:00
parent ad2d083824
commit 90715d7210
12 changed files with 130 additions and 0 deletions

BIN
.DS_Store vendored

Binary file not shown.

3
1_funzioni/readme Normal file
View File

@@ -0,0 +1,3 @@
esegui calcola aggiungendo due numeri
calcola 1 4

Binary file not shown.

View 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;
}

Binary file not shown.

View File

@@ -0,0 +1,21 @@
#include <stdio.h>
#include <stdlib.h>
int main (int index, char** in_data){
short data = 0x0102;
char* datacp = (char*)&data;
if (*datacp == 0x01 && *(datacp+1)==0x02){
printf("Big Endian\n");
}else{
if(*datacp == 0x02 && *(datacp+1)==0x01){
printf("Little Endian\n");
}else{
printf("Unknow\n");
}
}
return 0;
}

View File

@@ -0,0 +1,3 @@
utility_check _size mostra la grandezza in byte dei divers tipi di dato
check_architecture legge come parametro da lien di comando 4 cifre esadecimali e ne restituisce il valore in little e big endian
my_architecture mostra l'archiettura corrente

Binary file not shown.

View File

@@ -0,0 +1,10 @@
#include <stdio.h>
int main (int size, char** data){
fprintf (stdout, "Char: %lu byte\n",sizeof(char));
fprintf (stdout, "Short: %lu byte\n",sizeof(short));
fprintf (stdout, "Int: %lu byte\n",sizeof(int));
fprintf (stdout, "Long: %lu byte\n",sizeof(long));
return 0;
}

13
da_vedere Normal file
View File

@@ -0,0 +1,13 @@
nel make file
@echo compilazione di $< in $@
FLAG1= -c
FLAG2 = -o
clear:
rm -f -- per esempio
vedi union, esercizi stringa, file, little e bigendian, dati esadecimali.

BIN
test/test Executable file

Binary file not shown.

13
test/test.c Normal file
View File

@@ -0,0 +1,13 @@
#include <stdio.h>
#include <stdlib.h>
int main (int index, char** in_data){
char buf[50];
fscanf(stdin,"%10[^\n]",buf);
fprintf(stdout,"%s",buf);
return 0;
}