Edit: Ok ich glaube ich komme so langsam dahinter. :)
Ich krieg diesen Scheiß LZX Kram einfach nicht hin. Vielleicht könnt ihr mir ja helfen, wenn ich euch was zum Probieren gebe.
LZX-Spezifikation:
http://msdn.microsoft.com/en-us/library ... sionformat
Genauer:
http://msdn.microsoft.com/en-us/library ... x#lzx_form
Anfangsdaten in Hex-Form:
Code: Alles auswählen
1010030000004363702200006F7635E9
CF933FFB4E53DDEEFA6E81A8AEB11195
BC014120BA436DF9FD8445F115B9B8AA
B4DBFFDE4FDF343D0030320546230080
07084BC94B7E386D25091961747DA42F
F799F4A46CC914B31CF04BA1059125EC
287BBB533B6C72EE760F3FCA02DB76BF
6FCA0ABB9C6FFC80016C5CCEE53C9C47
7EE5C01FE0E8A0B78D078116F0D3151D
743CEF4B8F79A4A7DF9284F000004600
8C660000DFA0FFFEDFF7F77D7677DBEE
B7B66E4B56B06A4BB6B14A56C9467637
DBEEB65DF69F6DD6D63615D8486A2288
208035081F04B138247C44119027237C
10E81F048050CDFA968C8A482C5C0285
ACC569713299D1FAA98AF12B0C66E550
B14BA94C0045D36531A823D131972D2D
342FAC61800DA96D0643AD542C4A920D
CBB53463C8814A35023243BA4C6698C6
92467D90169BA84B9529D86B53F477AE
C85294280539B15A49BF08E2490F5AE6
0C0509837468614E822A0461E4D93393
926EB3996E5494948AC9FA878B65E504
B42C5EA3A21142E6736AC65C92903253
677F99A9FB920F0809A44596537D5759
61C2898E5E0272C121FBA8955D63A379
86CEC08B178A9F302E51E4AD46DD353C
F38C9C539147A563DA3CCCE5CFB9F3B6
D3D448CE57D45DE8022DF2FA58C5E882
A755A864105073D4D174CBF530171009
716CC1CD7226540A51BD6E48739FA915
50D7DFD84A629AC71138194836A25574
82FE41BE2B821D2B6FAADD178D515E79
9CB8CC97D06547E37D5A9B7DEB43B9ED
7ED08C5928C88D2E0733ADD10589B3D1
2CB13BF3F76A160298675B33D93E2D9F
926BFFAC6A265B54755AC47A680ABD4B
E59C8583D339EFB19B558A37703664C7
BA2854A6BA02463994195904E5F1140B
60B89DDB67989540ADE47200C03DD482
Mir würde schon reichen halbwegs realitätsnahe Huffman-Trees aus diesen Daten zu generieren. Es kommt einfach nur Grütze bei raus. Das stimmt vorn und hinten nicht. Solangsam glaub ich dass es da noch Daten gibt, die nicht in der Spec stehen oder die Reihenfolge doch anders ist. Ich hab schon ein paar Libs gesichtet, die alle so arbeiten wie mein Code (vom draufgucken her, testen ging nicht, weil die nicht für CHMs sondern anderen Kram ausgelegt sind), aber weder mein Code bringt was vernünftiges hervor, noch kann ich aus den Daten selbst etwas konstruieren, was halbwegs passen könnte.
Blocktypen gibt es nur mit der ID 1, 2 oder 3. Unter Annahme, dass der Blocktyp in den Bits 1-3 kodiert ist, wäre das immer 1 (auch wenn man die Bytes umdreht, wie gefordert), da beide Bytes 0x10 (16) sind. Also ein Verbatim-Block. Dann müssten MainPreTree, MainTree, RemainingMainPreTree, RemainingMainTree, LengthPreeTree und LengthTree folgen. Dazwischen noch 24 Bit für die unkomprimierte Länge (wobei das scheinbar nur einige Libs beachten!). Ich kann mir nicht vorstellen dass all die Libs nicht funktionieren, aber ich krieg es einfach nicht gebacken ...
Mir würde schon ein vernünftiger MainTree reichen...
Ohne Input kein Output.