Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

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

 
Алик   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
9-1140959944
Fenix
2006-02-26 16:19
2006.12.31
Привязка камеры к актеру.


1-1163508605
Axis_of_Evil
2006-11-14 15:50
2006.12.31
TListBox: Items разной высоты


2-1165837189
YuMB
2006-12-11 14:39
2006.12.31
Как программно выключить компьютер?


2-1166084082
Николай1
2006-12-14 11:14
2006.12.31
TApplicationEvents.onIdle не работает


2-1165934770
Ezorcist
2006-12-12 17:46
2006.12.31
как запихнуть картинку в файл ресурсов?