2016-11-15 58 views
0

我正在做一个.net应用程序的逆向工程,它存储在数据库(Firebird)后面的blob中。它包含了〜0.00和〜6.00之间的18个数字。你知道这可能是什么数据结构,以及如何将这个十六进制反转为十进制或浮点数,它们在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