LINUX.ORG.RU

Помогите разгадать нестандартный формат


0

0

Есть закрытый формат файла, в котором среди прочего записываются длины. Беру прогу, которая работает с этим форматом и меняя значение сравниваю бинарники. Нашел соответствие:

0xF3F0 = 0.01mm
0x4000 = 0.02mm
0x4008 = 0.03mm
0x4010 = 0.04mm
0x4014 = 0.05mm
0x4018 = 0.06mm
0x401C = 0.07mm
0x4020 = 0.08mm
0x4022 = 0.09mm
0x4024 = 0.10mm
0x4026 = 0.11mm
0x4028 = 0.12mm
0x402A = 0.13mm
0x402C = 0.14mm
0x402E = 0.15mm
0x4030 = 0.16mm
0x4031 = 0.17mm
0x4032 = 0.18mm
0x4033 = 0.19mm
0x4034 = 0.20mm

Перед и после этих значений в файле нули (которые возможно тоже являются частью числа). Надо записать закономерность формулой.

★★★★★

Формулу вряд ли напишем, но закономерность более-менее понятна. 0x40ab означает, что нужно взять (a+1) старших бит в b (обозначим получившееся число через c), после чего значение будет

c + 2^(a+1)

сотых миллиметра. Для 0.01mm - исключение.

Miguel ★★★★★
()

Чувак, это стандартный тип double. Каждое число - 8 байт.

0x3FF0000000000000 = 1.000000
0x4000000000000000 = 2.000000
0x4008000000000000 = 3.000000
0x4010000000000000 = 4.000000
0x4014000000000000 = 5.000000
0x4018000000000000 = 6.000000
0x401C000000000000 = 7.000000
0x4020000000000000 = 8.000000
0x4022000000000000 = 9.000000
0x4024000000000000 = 10.000000
0x4026000000000000 = 11.000000
0x4028000000000000 = 12.000000
0x402A000000000000 = 13.000000
0x402C000000000000 = 14.000000
0x402E000000000000 = 15.000000
0x4030000000000000 = 16.000000
0x4031000000000000 = 17.000000
0x4032000000000000 = 18.000000
0x4033000000000000 = 19.000000

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Зря ты его взломал. Жди теперь пативэн.

ttnl ★★★★★
()
Ответ на: комментарий от bigbit

Спасибо:) Ступил. Я проверял double/float, но видимо где-то ошибся.

Pavval ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.