Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перевод шестнадцатиричных чисел в десятичные


Алик ©   (2006-12-11 11:25:00) 

Всем привет!

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

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


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


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

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


Anatoly Podgoretsky   (2006-12-12 01:06:00) [2]

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

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


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


> AndreyRu   (12.12.06 00:31) [11]

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

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

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


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

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


Anatoly Podgoretsky   (2006-12-11 21:42:00) [5]

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

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

2.
Swap(Az)


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

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

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


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

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

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

Az = B1 shl 8 + B2

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


Anatoly Podgoretsky   (2006-12-11 19:51:00) [8]

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

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


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

> 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 12:28:00) [10]

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

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


Kolan   (2006-12-11 11:59:00) [11]

> дерективу abstract

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


Kolan   (2006-12-11 11:58:00) [12]

> [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;


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

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


Elen   (2006-12-11 11:29:00) [14]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо