|
Получение значений координат из шестнадцатеричного формата | ☑ | ||
---|---|---|---|---|
0
EvgKolivagin
20.09.21
✎
15:04
|
Приветствую,
помогите с конвертацией из шестнадцатеричного формата в координаты. Пример из "A027AFDF5D984840" должно получиться "49.1903648" Хотелось бы понять по какому алгоритму это можно сделать... |
|||
1
1Сергей
20.09.21
✎
15:10
|
Гуглить не пробовали?
|
|||
2
EvgKolivagin
20.09.21
✎
15:14
|
(1) Пробовал, нашел примеры, но не никак не могу понять суть
|
|||
3
Малыш Джон
20.09.21
✎
15:15
|
(2) значит надо пробовать ещё раз. А потом ещё. И так пока не получится
|
|||
4
1Сергей
20.09.21
✎
15:19
|
Откуда получены координаты в шестнадцатиричном формате?
|
|||
5
EvgKolivagin
20.09.21
✎
15:21
|
(4) Конкретно эти из описания протокола взаимодействия WialonRetranslator 1.0, там есть пример входящего пакета
|
|||
6
EvgKolivagin
20.09.21
✎
15:22
|
Вот пакет целиком
74000000333533393736303133343435343835004B0BFB70000000030BBB000000270102706F73696E6 66F00A027AFDF5D9848403AC7253383DD4B400000000000805A40003601460B0BBB000000120004707 7725F657874002B8716D9CE973B400BBB00000011010361766C5F696E707574730000000001 |
|||
7
acht
20.09.21
✎
15:24
|
(0) Согласно описанию протокола, это double. 8 байт.
|
|||
8
EvgKolivagin
20.09.21
✎
15:26
|
(7) Да, только как преобразовать? Тут я и застрял...
|
|||
9
acht
20.09.21
✎
15:28
|
(8) https://gregstoll.dyndns.org/~gregstoll/floattohex/
Надо установить флаг "Swap endianness" |
|||
10
acht
20.09.21
✎
15:29
|
Это прям первое, что поиск выдал
|
|||
11
acht
20.09.21
✎
15:30
|
||||
12
acht
20.09.21
✎
15:33
|
||||
13
EvgKolivagin
20.09.21
✎
15:34
|
(9) Я находил этот калькулятор, но когда я подставляю в строку HEX значение A027AFDF5D984840, то получаю 3.1343, а не 49.1903648 как в примере
|
|||
14
acht
20.09.21
✎
15:35
|
(13) Еще раз.
Надо установить флаг "Swap endianness" |
|||
15
EvgKolivagin
20.09.21
✎
15:36
|
(14) Я установил, у меня показывает 3.1343
|
|||
16
Кирпич
20.09.21
✎
15:39
|
var
d : double; p : PInt64; begin p := @d; p^ := $4048985DDFAF27A0; //перевернутое A027AFDF5D984840 ShowMessage(d.ToString); end; вот так дает 49.1903648 нужно байты развернуть |
|||
17
EvgKolivagin
20.09.21
✎
15:39
|
Еще я нашел обсуждение такой же проблемы, там есть такая фраза о координатах measured in degrees with a 1x10^-7 degree lsb, signed 2’s complement.
|
|||
18
acht
20.09.21
✎
15:40
|
||||
19
Ёпрст
20.09.21
✎
15:40
|
(15) врешь же
http://pics.rsh.ru/img/convert_hy0bar8j.png |
|||
20
EvgKolivagin
20.09.21
✎
15:43
|
(18) (19) Извените ребят, я чет ослеп уже под конец дня, да все правильно
|
|||
21
Kassern
20.09.21
✎
15:44
|
(19) ТС видимо про это) https://ibb.co/dPnQ6y2
|
|||
22
EvgKolivagin
20.09.21
✎
15:44
|
(21) Да(
|
|||
23
EvgKolivagin
20.09.21
✎
15:46
|
Спасибо всем кто принял участие в обсуждении, очень мне помогли.
|
|||
24
Кирпич
21.09.21
✎
22:06
|
Вот. Прямо с дивана
|
|||
25
acht
21.09.21
✎
23:13
|
(24) Можно обойтись без ковыряния со строками, банальными битовыми операциями с числами.
Но лениво. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |