Salve a tutti,
ho un server in Java che riceve e trasmette tre tipi di variabili: una stringa, un intero ed un float.
Per inviare, in C, le variabili di tipo integer e float, devo convertirli in un bytearray di lunghezza 4.
Cercando su internet ho trovato due soluzioni diverse, e vorrei chiedervi il significato perchè non mi è chiaro.
La prima soluzione è questa, mi converte una variabile di tipo integer, ma non float.
unsigned char bytes[4];
int n = 3;
bytes[0] = (n >> 24) & 0xFF;
bytes[1] = (n >> 16) & 0xFF;
bytes[2] = (n >> 8) & 0xFF;
bytes[3] = n & 0xFF;
Cosa significa di preciso questo codice? e come dovrei adattare questo codice per convertire una variabile di tipo float?
La seconda soluzione, mi converte sia una variabile di tipo integer che di tipo float:
unsigned char* hexVals = malloc(sizeof(float));
int n = 2;
float f = 2,7;
hexVals[0] = ((unsigned char*)&n)[3];
hexVals[1] = ((unsigned char*)&n[2];
hexVals[2] = ((unsigned char*)&n)[1];
hexVals[3] = ((unsigned char*)&n)[0];
hexVals[0] = ((unsigned char*)&f)[3];
hexVals[1] = ((unsigned char*)&f[2];
hexVals[2] = ((unsigned char*)&f)[1];
hexVals[3] = ((unsigned char*)&f)[0];
Cosa significa quest'altro codice? e che differenza c'è tra l'altra soluzione?