J'ai un tampon char
buf
contenant buf[0] = 10
, buf[1] = 3
, buf[2] = 3
, buf[3] = 0
, buf[4] = 58
,Convertir tampon char struct
et une structure:
typedef struct
{
char type;
int version;
int length;
}Header;
Je voulais convertir le buf
en Header
. Maintenant, je suis en utilisant la fonction
int getByte(unsigned char* buf)
{
int number = buf[0];
return number;
}
int getInt(unsigned char* buf)
{
int number = (buf[0]<<8)+buf[1];
return number;
}
main()
{
Header *head = new Header;
int location = 0;
head->type = getByte(&buf[location]);
location++; // location = 1
head->version = getInt(&buf[location]);
location += 2; // location = 3
head->ength = getInt(&buf[location]);
location += 2; // location = 5
}
Je suis à la recherche d'une solution telle que
Header *head = new Header;
memcpy(head, buf, sizeof(head));
Dans cette, première valeur de la Header
, head->type
est propre et le repos est des ordures. Est-il possible de convertir unsigned char* buf
en Header
?
Sizeof un pointeur est 4 ou 8. Vous voulez Sizeof * tête – stark
depuis int est de 2 octets et caractère est 1 octet de taille de la tête doit être 5. Je vais le confirmer. –
votre taille de caractères [5] est 5 octets votre en-tête est de 9 bytes Header.length ne sera jamais initialisé –