Procházení struktury byte o byte? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Procházení struktury byte o byte? – C / C++ – Fórum – Programujte.comProcházení struktury byte o byte? – C / C++ – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1602 příspěvků
15. 10. 2024   #1
-
0
-

Mějme strukturu

# pragma pack(1)
typedef struct
{
uint8_t a;
uint8_t b;
uint32_t c;
} Struct;

Struct s;

Direktiva pragma pack u překladeče MS zajistí , že se pro strukturu vyčlení v paměti 6bytů.

Pokud s.a=1, s.b=2 a s.c=3 mělo by být v paměti ulozeno po bytech 1,2,0,0,0,3 (připoušítm, že u uint32 by to mohlo byt i obráceně, ale to ted neřešme).

Mám funkci, které když zadám adresu v paměti a počet bytů ona data z paměti odele byt o bytu tedy při f(&s,6) by měla přenést 1,2,0,0,0,3 což se, ale nestane, první byte se OK ale už druhy obshuje jinou hodnotu.

Co dělm blbě, respektive kde je chyba?

Nahlásit jako SPAM
IP: 2605:6400:30:f174:42:42::...–
gna
~ Anonymní uživatel
1891 příspěvků
15. 10. 2024   #2
-
0
-

Packing funguje tak jak píšeš. Tak buď v té struktuře máš jiná data, nebo v té funkci něco špatně.

Nahlásit jako SPAM
IP: 213.211.51.–
Jerry
~ Anonymní uživatel
512 příspěvků
16. 10. 2024   #3
-
0
-

#1 Martin
a nuluješ tu paměť před prvním použitím že ano ?

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:f028:9acb:7c0b:639c...–
MilanL+1
Grafoman
29. 10. 2024   #4
-
0
-

#1 Martin
ideálně by bylo ukázat tu funkci případně část programu kde tu strukturu plníš, někde tam budeš mít nějakou malou nenápadnou chybku.

Ono v C/C++ kolikrát stačí málo, aby se program fungoval jinak než  má.

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Void* na byte[] v C# — založil Radek Chalupa

Unsigned byte — založil dan

Parsování byte array — založil TomyB

Mp3 to byte array — založil kajikw

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý