Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

как получить число 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-20011
M126
2003-06-15 12:23
2003.07.07
Запрос на поиск


14-20287
gn
2003-06-20 11:10
2003.07.07
ftp server


14-20254
Эд
2003-06-18 16:54
2003.07.07
Converter из DCU в PAS?


1-20109
Goga
2003-06-24 10:41
2003.07.07
Подскажите, как реализовать обратный вызов от MIDAS сервера


14-20309
Тих
2003-06-21 00:39
2003.07.07
Что это такое?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский