Главная страница
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.011 c
8-20167
altarasjuk
2003-03-21 21:15
2003.07.07
Canvas dose not allow drawing.


14-20192
LOX
2003-06-18 18:15
2003.07.07
Дроби


14-20215
k-man
2003-06-22 20:02
2003.07.07
The Bat 1.61


1-20069
anod
2003-06-25 15:55
2003.07.07
Как определить одновременное нажатие клавиш


1-20104
Belkova
2003-06-24 13:47
2003.07.07
Projet Project1.exe raised class EOleSysError