Pretypovani ukazatele struktury na bajt
Libor Konečný
support na mikrovlny.cz
Neděle Únor 23 17:13:43 CET 2020
Zdravim osazenstvo, predevsim zdejsi programatory.
S novym kompilatorem (ten stary to nejakou zahadou umel) resim
pretypovani ukazatelu.
Mam funkci (zjednodusene)
void funkce (UINT8 * from)
{
*from++=0x01 ;
*from++=0x02 ;
*from++=0x03 ;
*from++=0x04 ;
*from++=0x05 ;
*from=0x06 ;
}
A pak strukduru
struct {
UINT16 magic;
DWORD ident;
} hdr;
A potrebuji ji naplnit,
tedy volam
funkce ((UINT8*)&hdr);
ale kompilator to naplni vzdy jen jednim znakem
tedy vysledek je ze hdr.magic ma jen prvni bajt spravny.
Pokud pouziji strukturu
struct {
UINT8 pole[6];
} hdr;
Pak se naplni vsech 6 bajtu spravne.
Jak ji volat spravne aby se struktura prepisovala bajt po bajtu ?
(little a big endian zanedbejme)
Je zvlastni, ze stary kompilator fungoval spravne.
Dekuji za nakopnuti.
LK
Další informace o konferenci Hw-list