Salve,
stò scrivendo un programmino in c ma non mi tornano i conti.
io creo un pacchetto di 100 byte cosi:
invio
setto a 0 lo spazio per i 100 bytecodice:uint32_t idmsg = 0; uint32_t pkt[100];
inserisco il msg nei primi 4 bytecodice:memset((char*)pkt,0,100);
codice:pkt[0]=idmsg; invio(pkt)....
ricevo:
// alloco 100 byte per il nuovo msgcodice:ricevo(msg)... uint32_t valore; char * pktricevuto = msg;
//copio i primi 100 byte di pktricevuto in buf(che è un puntatore ad un char della stuttura)codice:new_el->buf = (char*)malloc(100 * sizeof(char));
// copio i primi 4 byte del puntatore puntato da new_el->buf in valorecodice:memcpy(new_el->buf,pktricevuto,100);
però se faccio:codice:memcpy(valore,new_el->buf,sizeof(uint32_t));
riesce a leggermi fino al numero 127, quindi il primo byte e poi mi stampa varie sequenze di numeri;codice:printf("leggo pkt %u e lo scrivo in memoria\n",valore);
dove sbaglio?
![]()

Rispondi quotando