Главная страница
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.014 c
6-20182
Snap
2003-04-21 23:38
2003.07.07
Пакеты


14-20313
Вутшы
2003-06-21 11:16
2003.07.07
Как бы мне структуру связей посмотреть?


7-20330
Dark_arhangel
2003-04-20 04:09
2003.07.07
Как работать с портами и какой вольтаж навыходе.


7-20320
orion_st
2003-04-24 18:27
2003.07.07
OLE Automation


3-20006
ray
2003-06-14 11:36
2003.07.07
DbGrid???