簡體   English   中英

Windev Compress():使用哪種壓縮格式

[英]Windev Compress(): which compression format is used

有誰知道,WinDev-Function Compress() 使用哪種壓縮方法,也許,如何在 php 中解壓縮結果?

WinDev 的 API 只說“二進制”壓縮,但沒有進一步的細節。 http://doc.windev.com/en-US/?3024012&product=WD&productversion=XXA150

在 php 中我可以使用 unpack(),但必須說明是哪種格式。 沒有知識就是大海撈針。

也許有人已經這樣做了,可以幫助我。

示例: 包含 Compress()-Function 的示例結果和用於比較的純內容的 zip 文件

PCSOFT 將其 WDZ 格式用於大部分內容,它不是標准格式,因此您將無法使用常用工具打開它。 我聽說他們使用了一些常用的庫,如 zlib,但對其進行了一些改動,因此您可能只能使用他們的工具 WDZIP.EXE 來處理它。

您應該查看其他函數,例如 zipCreate() 以創建檔案並使用一些標准格式: http ://doc.windev.com/en-US/?3082007

希望這可以幫助 :)

這個問題已有 7 年歷史,但如果有人需要讀取使用該函數壓縮的數據,我也不得不將其反轉:

  • 它以01 01 00 00 00 XX開頭,其中XX是:
    • 00表示“無壓縮”
    • 04代表“LZW”
  • 然后是小端 int32 中壓縮數據的長度。
    • 如果有壓縮,則后跟未壓縮緩沖區的長度(數據長度 + 4)。
  • 然后是緩沖區(已編碼或未編碼),其中包含:
    • 小端 int32 中未壓縮數據的長度。
    • 實際數據。

LZW 壓縮使用 16 位代碼而不是通常的 12 位,並且它的明碼為零,這意味着每個字面代碼都遞增。

我采用了 Go 的compress/lzw包並對其進行了一些修改:16 位代碼、零清除代碼、遞減每個文字代碼。 到目前為止,它可以正確解碼所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM