2016-11-15 6 views
0

Я занимаюсь обратным проектированием приложения .net, которое хранится в DB (Firebird) после blob. Он содержит 18 номеров от ~ 0,00 до ~ 6,00. Знаете ли вы, какая структура данных это может быть и как отменить это шестнадцатеричное число до десятичного или плавающего числа, которые находятся в этом диапазоне 0.00 ~ 6.00.Обратное проектирование структуры данных

FE 13 73 64 7A 59 FB 3F EB 8C 9B 85 26 75 05 40 A0 2F 2D 06 96 73 00 40 B8 
A8 BE 1D 0F E5 01 40 D2 DF C9 6A 79 83 03 40 97 65 59 96 65 B9 0C 40 B2 88 
F1 7E 55 DE 05 40 E4 45 5E E4 45 9E 00 40 34 05 20 CD 9E B9 FB 3F 58 20 9F 
8B 53 D2 FC 3F 1A 44 DB 4D 77 4E 02 40 03 F9 5C 9C 92 B6 FF 3F 85 54 48 85 
54 C8 00 40 E0 C9 6A 79 63 04 05 40 87 05 F2 B9 38 25 09 40 2D 41 79 FA 0D 
66 03 40 CA 77 49 64 11 A3 FE 3F 57 AA D8 BD 10 7F FD 3F 

Спасибо!

ответ

0

Похоже, что числа представляют собой только 18 однотонных поплавков IEEE-754, объединенных вместе.

Вы можете использовать BitConverter.ToDouble, чтобы снова преобразовать 8 этих байтов в число. Поэтому вам придется перебирать этот массив байтов в кусках по 8 байт.

Ваш конкретный пример приведет к следующим номерам:

FE 13 73 64 7A 59 FB 3F => 1.7093452380952 
EB 8C 9B 85 26 75 05 40 => 2.6822023809524 
A0 2F 2D 06 96 73 00 40 => 2.0564384920635 
B8 A8 BE 1D 0F E5 01 40 => 2.2368452380952 
D2 DF C9 6A 79 83 03 40 => 2.4391964285714 
97 65 59 96 65 B9 0C 40 => 3.5905257936508 
B2 88 F1 7E 55 DE 05 40 => 2.7335615079365 
E4 45 5E E4 45 9E 00 40 => 2.0772817460317 
34 05 20 CD 9E B9 FB 3F => 1.7328174603175 
58 20 9F 8B 53 D2 FC 3F => 1.8013492063492 
1A 44 DB 4D 77 4E 02 40 => 2.2883134920635 
03 F9 5C 9C 92 B6 FF 3F => 1.9820734126984 
85 54 48 85 54 C8 00 40 => 2.0978174603175 
E0 C9 6A 79 63 04 05 40 => 2.6271428571429 
87 05 F2 B9 38 25 09 40 => 3.1431746031746 
2D 41 79 FA 0D 66 03 40 => 2.4248313492063 
CA 77 49 64 11 A3 FE 3F => 1.9148115079365 
57 AA D8 BD 10 7F FD 3F => 1.8435218253968