|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.07.2012, 15:19 | #1 |
Пользователь
Регистрация: 07.04.2011
Сообщений: 18
|
Перевести 4-х байтное число из 16-го числа в дробное десятичное
Привет всем, нужен совет. Как перевести 8 байтное число из 16-ричной системы в дробное десятичное это мы умеем и знаем
Код:
а как перевести 4-х байтное число, допустим 3F6971E4. d8: array [0..3] of byte = ($3F,$69,$71,$E4); |
15.07.2012, 16:08 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Single(d8) поможет.
I'm learning to live...
|
16.07.2012, 06:47 | #3 |
Пользователь
Регистрация: 07.04.2011
Сообщений: 18
|
Все равно не получается, по примеру должно быть 3F7A09AC = 106.4962476
и 3FDA8117 = 107.1284503, а при использовании Double(d8) и Single(d8) числа получаются очень маленькими |
16.07.2012, 07:39 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
16.07.2012, 12:00 | #5 |
Пользователь
Регистрация: 07.04.2011
Сообщений: 18
|
Начну из далека. Ко мне в программу поступают координаты в 16-ричной системе по протоколу: что они равны 4 байта и формат данных float, я сначала не понял, и спросил у разработчика который мне эти данные отправляет, оказалось что пакет приходит в виде E871693F 42F4E83F, где первые 4 байта широта а вторые 4 байта долгота. Оказалось что эти 4 байта необходимо читать с конца, т.е. широта 3F6971E8 долгота 3FE8F442, ну и эти данные должны быть равны приблизительно 106.4962476, как они это получают не понятно....
|
16.07.2012, 12:07 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
дык вам сначало порядок байт сменить надо, потом уже переводить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.07.2012, 12:16 | #7 |
Пользователь
Регистрация: 07.04.2011
Сообщений: 18
|
Пепел Феникса, что ты имеешь в виду
|
16.07.2012, 19:50 | #8 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Процессоры Intel (и совместимые) хранят число, начиная с младшего байта.
Код:
-1.78129964082461E+0022 9.11894083023071E-0001 1.70706450939178E+0000 8.39152267043049E-0025 |
16.07.2012, 20:17 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я к примеру тоже в одном проекте вынужден переворачивать, и делаю это так: Код:
I'm learning to live...
|
|
05.10.2012, 11:02 | #10 |
Регистрация: 05.10.2012
Сообщений: 4
|
UPD: два дня мучался, в итоге как на форуме спросил, через полчаса сам все сделал) Проблема решена.
Мы все умрем
Последний раз редактировалось Roguer; 05.10.2012 в 11:47. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевести из 16-го числа в дробное десятичное | Skail | Общие вопросы Delphi | 3 | 29.04.2012 09:31 |
Перевести отрицатьльное дробное число в двоичную систему | Иллидан | Помощь студентам | 0 | 14.11.2010 13:04 |
класс «дробное число» | RodionL3 | Общие вопросы C/C++ | 5 | 24.04.2010 12:44 |
класс «дробное число»(С++) | RodionL3 | Помощь студентам | 2 | 22.04.2010 21:30 |
Перевести целое положительное десятичное число в шестнадцатеричное счисление | Alfis | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 28.12.2008 20:40 |