Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

как получить число Integer зная его два Byte   Найти похожие ветки 

 
Kostya ©   (2003-06-25 11:27) [0]

помогите!
как получить число Integer зная его два Byte
Integer:=?byte1?Byte2?


 
Poirot ©   (2003-06-25 11:34) [1]

например так

var int:integer;
a,b:byte;
begin
a := 10; //mladshiy
b := 20; //starshiy
int = 0;
int = b << 8 + a;
end;


 
Palladin ©   (2003-06-25 11:38) [2]

Poirot, ты о чем, что еще за чудо-юдо-рыба-кит?

int:=byte1 shl 8+byte2;


 
Poirot ©   (2003-06-25 11:41) [3]

это было почти на паскале - для тех кто в абрамсе на С << тоже самое, что на Паскале shl!


 
Kostya ©   (2003-06-25 11:46) [4]

спасибо


 
Ihor Osov'yak ©   (2003-06-25 11:48) [5]

Во первых, в делфи интежер - четыре байта. Поэтому точно востановить интежер, зная его толко два байта невозможно...

А вообще то, для этого не обязательно писать код, который генерит машинный код.. Достаточно вспомнить про absolute или записи с вариантами..

Вариант с absolute может быть ненадежен ввиду виравнивания на границу 4. Поэтому нужно все равно писать что-то вида

var
setByte : packed record
b0,b1,b2,b3:byte;
end;
i:integer absolute setByte;

или декларировать тип

type
myType = packed record
case byte of
0:(b0,b1,b2,b3:byte);
1:(i:integer);
end;


Надеюсь, остальное понятно...



 
Palladin ©   (2003-06-25 11:50) [6]

Удалено модератором


 
Poirot ©   (2003-06-25 11:58) [7]

Удалено модератором


 
Ihor Osov'yak ©   (2003-06-25 12:12) [8]

2 Poirot © (25.06.03 11:58)

Цитирую:

> как получить число Integer зная его два Byte

Еще раз обьясняю. Integer на win32 платформе имеет 4 байта.
То есть зная только половину из его байтов, получить значение integer невозможно. О чем и говорилось.

Почему вывод о вопросе относительно Win32? Делфи работает только с Win32, форум по делфи, и если не оговорено обратное - то подразумевается win32 платформа..

Относительно absolute.. Такая техника в си недоступная. Но на основании этого не нужно говорить, что кто-то понты бросает..






 
Poirot ©   (2003-06-25 12:16) [9]

Удалено модератором


 
Armen   (2003-06-25 15:44) [10]

Integer:= MakeWord(Byte1, Byte2)


 
k-man ©   (2003-06-25 16:49) [11]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-19996
Studentik
2003-06-11 23:39
2003.07.07
Хранимые процедуры в Web-модуле


14-20228
Snake2000
2003-06-19 09:35
2003.07.07
2-й курс канул в лету !!!


3-19957
werr
2003-06-10 14:37
2003.07.07
Как переиндескировать?


14-20210
LOX
2003-06-20 20:25
2003.07.07
Пароль в XP!


1-20137
SVM
2003-06-22 22:40
2003.07.07
TComboBoxEx