|
Тема |
byte array -> record |
|
Автор | lj (Нерегистриран) | |
Публикувано | 26.02.04 09:19 |
|
|
imam edin packed record s 2 integer poleta
i edin array of byte, chiito razmer e raven na razmera (v bytes) na recorda.
opitvam se da kopiram pametta ot tozi byte-array varhu pametta na recorda i posle da vidq stojnostite na poletata ot recorda, samo che javno nestho ne e taka kakto si go predstavqm.
kazete mi molq edin packed record (na compilatora mu e kazano alignment = 1) kak se predstavq v pametta ?
moga li da ochakvam, che prosto sa zadeleni posledovatelno neobhodimite bytes za vsqko pole, primerno
field1 : integer - t.e. 4 bytes
field2: cardinal - t.e. 4 bytes
field3 : byte - t.e. 1 byte
i t.n.
?
iskam izkustveno da napravq "typecast" na edna porediza ot bytove kum edin record, samo che zasega nqmam uspeh.
primerno imam gornia record ot 3 poleta i imam edin array of byte 11 bytes, kojto ima stonosti:
0,0,0,1,0,0,2,0,90
moga li da go kopiram taka varhu recorda , che sled tova da se poluchi
field1 (integer (4 bytes)) = (0,0,0,1) = 1 + 0*256 + 0*256^2 + 0*256^3 = 1;
field2 (cardinal (4 bytes)) = (0,0,2,0) = 0 + 2*256 + 0*256^2 + 0*256^3 = 512;
field3 (byte (1 byte)) = 90;
?
zasega za filed1 vmesto 1 se poluchava 256^3 , t.e. izliza , che 1 se e kopiralo v naj-starhia byte ot integera, samo che ne moga da razbera zashto
|
| |
|
|
|