![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сколько в памяти займет integer ?
Ezorcist © (2007-03-08 01:31:00)и как перевести любое integer в набор переменных типа byte? (так что бы их число было одинаковым для любого integer) ?
Vlad Oshin (2007-03-09 18:13:00) [1]procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
a1,a2,a3,a4:byte;
begin
i:=2147483645;
asm
mov eax,i
mov a1,al
mov a2,ah
shr eax,16
mov a3,al
mov a4,ah
end;
showmessage(inttostr(a1)+' '+inttostr(a2)+' '+inttostr(a3)+' '+inttostr(a4));
end;
:)
Сергей М. (2007-03-09 16:24:00) [2]
> Ezorcist (09.03.07 15:51) [4]
> Integer занимает четыре байта так?
В Delphi for Win32 - да, так. В иных средах для иных платформ м.б. иначе.
> Как представить любой integerв виде четырех переменных
> типа byte
"Любой" - никак.
А конкретныйinteger для конкретной Delphi for Win32 - см. [3]
Джо (2007-03-09 15:55:00) [3]> [4] Ezorcist (09.03.07 15:51)
> 2Джо
>
>
> > ShowMessage(IntToStr(SizeOf(Integer)));
> >
>
>
> За это спасибо, а вот [3] не понял. Integer занимает четыре
> байта так? Как представить любой integer в виде четырех
> переменных типа byte и обратно?
Вот так и представить, как я написал. Есть еще и другие способы, но этот совсем неплох.
По поводу того, как это работает — см. Справку или учебник на предмет «записей с вариантами» (разде Variant parts in records).
Kolan (2007-03-09 15:52:00) [4]absolute - проше всего...
Ezorcist (2007-03-09 15:51:00) [5]2Джо
> ShowMessage(IntToStr(SizeOf(Integer)));
>
За это спасибо, а вот [3] не понял. Integer занимает четыре байта так? Как представить любой integer в виде четырех переменных типа byte и обратно?
Джо (2007-03-08 01:56:00) [6]> как перевести любое integer в набор переменных типа byte
Что имеется в виду? Это?
type
TIntRec = packed record
case Integer of
0: (Int: Integer);
1: (Bytes: array [0..3] of Byte);
end;
var
Int: TIntRec;
...
Int.Int := 12345465;
... := Int.Bytes[0];
... := Int.Bytes[1];
etc...
Джо (2007-03-08 01:47:00) [7]> сколько в памяти займет integer ?
ShowMessage(IntToStr(SizeOf(Integer)));
Германн (2007-03-08 01:37:00) [8]
> сколько в памяти займет integer ?
>
> Ezorcist (08.03.07 01:31)
>
> и как перевести любое integer в набор переменных типа byte?
> (так что бы их число было одинаковым для любого integer)
> ?
>
ПППереввведи, плиззз.