Нужна помощь эксперта zLIB для функции VB.NET
Нужно знать, трачу ли я свое время на это. Использование UltraID3lib, который не распаковывает кадры, а сохраняет их в массиве, используя функцию исключения. Используемые флаги говорят, что они сжаты, но не зашифрованы.
Если байты действительно сжаты в zLIB и имеют правильный формат: как я могу распаковать их, учитывая тот факт, что я абсолютно ничего не знаю о zLIB, и я всего лишь частично занятый кодер, которого бросили ему на голову, как ребенка. (Пожалуйста, объясните медленно).
Пользовательский кадр MP3 (TXXX) содержит небольшую строку XML. Быстрый (плохой пример) для получения байтового массива, хранимого UltraID3Lib:
UltraID3.Read(MP3FileName) 'actual file in folder
Dim byte1 As ID3v23EncryptedCompressedFrame
For Each byte1 In UltraID3.ID3v2Tag.Frames
Dim str1 = byte1.FrameBytes
Dim result1 = BytesToString2(str1)
Stop 'lets see what we got
Next
На этом сайте говорится, что если в начале у него 789C, то его сжатый zLib: http://www.xtremevbtalk.com/showthread.php?t=318843
Я использовал эти функции2 для преобразования в шестнадцатеричный формат: https://social.msdn.microsoft.com/Forums/vstudio/en-US/fa53ce74-fd53-4d2a-bc05-619fb9d32481/convert-byte-array-to-hex-string?forum=vbgeneral
Пример функции 1 в начале статьи:
000B0789C6330377433D63534D575F3F737B570343767B02929CA2C4B2D4BCD2B29B6B31D376367989B9A976C519F9E5ACE1989452536FA6019B924C206968017A10CA461F2C6AA3FD58A61427E5E72AA42228A114666E6F88CD04772110D5923799
Пример функции 2 в конце статьи:
000000B0789C6330377433D63534D575F3F737B570343767B02929CA2C4B2D4BCD2B29B6B301D376367989B9A976C519F9E50ACE1989452536FA60019B924C20696800017A10CA461F2C6AA30FD58A61427E5E72AA42228A114666E6F88CD047721100D5923799
1 ответ
Ваша "примерная функция 2" является шестнадцатеричным представлением действительного потока zlib, начиная с 789c
, который распаковывает в:
71F3-15-FOO58A77<trivevents><event><name>show Chart</name><time>10000000.000000</time></event><event><name>show once a</name><time>26700000.000000</time></event></trivevents>
Однако "примерная функция 1" является искаженной версией "примерной функции 2", по некоторым причинам с несколькими пропущенными нулевыми цифрами.
Вы можете использовать.NET DeflateStream класс для распаковки.