Voglio trasmettere i dati tramite la rete, ma non voglio utilizzare alcuna libreria esterna (Standard C/C++ è ok).Serialize Stringhe, interi e float agli array di caratteri per il networking SENZA LIBRERIE
ad esempio:
unsigned int x = 123;
char y[3] = {'h', 'i', '\0'};
float z = 1.23f;
Voglio che questo in un array
char xyz[11];
.
Nota: Per trasmetterlo su rete, ho bisogno di ordine Byte di rete per la funzione int (htonl) senza segno, quindi ho bisogno di serializzare in qualche modo il float per essere in forma IEEE 754 (ci sono molte funzioni su Internet), e lo so.
Come faccio a inserirli nella matrice xyz, ben allineati da un capo all'altro, quindi posso usarlo come buffer per la mia funzione socket + send()? Ovviamente ho funzioni inversa (ntohl, e un rovescio IEEE 754) per farli fuori, ma ho bisogno di una tecnica anche lì, preferibilmente lo stesso ...
sarebbe qualcosa di simile:
xyz in binary: 00000000 0000000 00000000 01111011 | 01101000 | 01101001 | 00000000 | 00111111 10011101 01110000 10100100 - big endian repr. of u. int 123 - | - 'h' - | - 'i' - | - '\0' - | - IEEE 754 repr of float 1.23 -
Come posso realizzare questo senza librerie esterne e l'uso minimo delle funzioni di libreria standard? Questo non è tanto per il mio programma quanto per me da cui imparare.
Prima di tutto, non hai effettivamente dichiarato la variabile y da nessuna parte. È un array di personaggi? Sai quanto sono grandi questi array o sono dinamici? –
Mi dispiace, ovviamente non posso inizializzare y con una stringa letterale tra virgolette, l'ho risolto. Ha una dimensione di 3 byte. – wsd