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

Вниз

Перевод шестнадцатиричных чисел в десятичные   Найти похожие ветки 

 
Алик   (2006-12-11 11:25) [0]

Всем привет!

Народ подскажите как перевести два байта (старший и младший байт) в одно десятичное число !

Думаю, что есть какой-нибудь простой вариант, пока же я перевожу оба байта в двоичное представление, сшиваю их и затем из одного двоичного числа получаю десятичное, получается типа как почесать правое ухо левой рукой. )


 
Elen ©   (2006-12-11 11:29) [1]

Удалено модератором


 
Сергей М. ©   (2006-12-11 11:54) [2]

"десятичное_число" := старший_байт shl 8 + младший_байт


 
Kolan ©   (2006-12-11 11:58) [3]

> [2] Сергей М. ©   (11.12.06 11:54)
> "десятичное_число" := старший_байт shl 8 + младший_байт

А я всегда пользую дерективу abstract
function ConvertBytesToWord(HighByte, LowByte: Byte): Word;
var
 Temp: Word;
 TempArr: array[0..1] of Byte absolute Temp;
begin
 TempArr[1] := HighByte;
 TempArr[0] := LowByte;
 Result := Temp;
end;


 
Kolan ©   (2006-12-11 11:59) [4]

> дерективу abstract

Извеняюсь, absolute конечно.


 
Anatoly Podgoretsky ©   (2006-12-11 12:28) [5]

> Алик  (11.12.2006 11:25:00)  [0]

Вопрос совсем непонятный, попробуй объяснить с исходными данным и нужным результатом, а то можно настроить множество теорий, что ты хочешь сделать


 
Алик   (2006-12-11 19:29) [6]

> Anatoly Podgoretsky ©   (11.12.06 12:28) [5]
> Вопрос совсем непонятный, попробуй объяснить с исходными данным и нужным результатом, а то можно настроить множество теорий, что ты хочешь сделать

Благодарю Всех за помощь!

Со специализированной аппаратуры я получаю два байта (Б1 и Б2) - старший и младший байты угла азимута (0 < Az < 360).
Необходимо получить одно десятичное число или угол азимут.

Если перевести Б1 и Б2 в 16-ную систему, то Az = $Б1$Б2

Но как это сделать в коде?

Сейчас проверю варианты предложенные Сергеем и Kolan.


 
Anatoly Podgoretsky ©   (2006-12-11 19:51) [7]

> Алик  (11.12.2006 19:29:06)  [6]

То есть у тебя байты поменяны местами, в стандарте OS 360?


 
Алик   (2006-12-11 21:09) [8]

Anatoly Podgoretsky
>То есть у тебя байты поменяны местами, в стандарте OS 360?

Все оказалось очень просто! Работают варианты и Сергея и Kolan!

Az = B1 shl 8 + B2

Так например если B1=1, B=89, то Az = 345  (десятичная система)
Или в 16-ной системе  B1=1, B=59, то Az=159 (шестнадцатиричная система)


 
vrem   (2006-12-11 21:37) [9]

ха, Алик, ты в курсе что загадочное "shl 8"
значит умножить на 256?

т.е. твой вопрос если применить к десятичным
числам, то получится -
имею 4 десятка и 5 единиц, как сшить в одно число,
(т.е. в 45)? :)
короче почитай что за такие системы исчисления,
кстати твоя - 256-ричные числа, не 16 ричные


 
Anatoly Podgoretsky ©   (2006-12-11 21:42) [10]

> Алик  (11.12.2006 21:09:08)  [8]

1.
WordRec(Az).Hi := B1
WordRec(Az).Low := B2

2.
Swap(Az)


 
AndreyRu   (2006-12-12 00:31) [11]

function HexToInt(Hex : String) : integer;
 begin
   Result := StrToInt("$"+Hex);
 end;


 
Германн ©   (2006-12-12 01:04) [12]


> AndreyRu   (12.12.06 00:31) [11]

Немного не туда, имхо.

> Anatoly Podgoretsky ©   (11.12.06 19:51) [7]
>
> > Алик  (11.12.2006 19:29:06)  [6]
>
> То есть у тебя байты поменяны местами, в стандарте OS 360?
>

Все мои железки передают байты от младших к старшим. И я очень не люблю тех, котороым это не нравится.


 
Anatoly Podgoretsky ©   (2006-12-12 01:06) [13]

> Германн  (12.12.2006 1:04:12)  [12]

Речь не о передаче, а о порядке байт Little vs Big Endian


 
Германн ©   (2006-12-12 01:16) [14]


> Anatoly Podgoretsky ©   (12.12.06 01:06) [13]
>
> > Германн  (12.12.2006 1:04:12)  [12]
>
> Речь не о передаче, а о порядке байт Little vs Big Endian

Я то именно о передаче. Если железка передаёт байты начиная с младшего, то очень удобно пользоваться рекордами.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
4-1156328404
tar4
2006-08-23 14:20
2006.12.31
Информации из контекста потока


2-1166105483
Dfe
2006-12-14 17:11
2006.12.31
Int64


15-1165855670
Гоблин
2006-12-11 19:47
2006.12.31
MSSQL - посоветуйте книжку


15-1165559328
Slider007
2006-12-08 09:28
2006.12.31
Не связанные друг с другом 2 вопроса ;) (видео, клиент форума)


2-1165870656
serko
2006-12-11 23:57
2006.12.31
Базы Access на др. компах!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский