04. juli 2004 - 18:10Der er
4 kommentarer og 1 løsning
Alignment af int.
Hejsa.
Jeg benytter Borland CPP 4 Pro.
Jeg er ved at læse en fil ind i en struktur. Jeg kender strukturens format, og kan se data i en hex-editor (FRHED 1.1.0)
Problemet er at når jeg læser data ind i min struct, så vender data om, i forhold til, hvad der forventes.
Et eksempel: I hex-editoren kan jeg se at der står '90 07'. Det oversætter editoren fint til 1936, men når jeg læser det ind i en unsigned short int, så bliver værdien 36864. De 1936 svarer til 0790 i hex, mens 36864 svarer til 9007 i hex. Jeg skal altså på en eller anden måde have compileren til at 'vende om' på hex-værdierne.
Jeg ved at min struktur er ok i længden, da det er en del af et array, jeg indlæser, og jeg kan se at det første felt, som er en char[8], passer for alle værdier i arrayet.
Jeg håber at en af eksperterne kan hjælpe.
M.v.h. Henrik.
P.S. Jeg overvejer at opgradere til BCB 6, kan det svare sig ? Hvad får man mere med den nye version ?
forklaringen er at din maskine gemmer og henter i "little endian" format, hvilket betyder at mindst-betydende byte er først, derfor bliver $90 $07 til $07 $90, når du læser direkte ind i en struct (som ligger i hukommelsen).
..grunden til at dit Char array ikke bliver byttet rundt er at "et char kun fylder een byte" (så der er ikke noget med at tage højde for mest/mindst betydende byte)
Jeg er kommet frem til at jeg skal konvertere data felt for felt, og ikke læse det hele direkte ind i een struktur ved een læsning. Nu laver jeg et char-array, og bearbejder det. Når jeg så får problemer, så spørger jeg bare her igen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.