Текущий архив: 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.46 MB
Время: 0.006 c