Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-20141
OlegM
2003-06-25 09:35
2003.07.07
Как заставить встроеный динамик пищать


14-20246
Rradion
2003-06-19 15:05
2003.07.07
СРОЧНО ( к завтрому ) надо решить задачки по Матем. -> 10$ по WM.


1-20034
Andrew_kv
2003-06-24 08:28
2003.07.07
Как передать параметры в форму


14-20255
wild_arg
2003-06-19 19:39
2003.07.07
Kylix & Linux


14-20256
Шоломицкий
2003-06-19 17:45
2003.07.07
Про меню...




   Наверх