問題タブ [zlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ZLib 解凍
zlib .net ライブラリを使用してデータを圧縮しようとしています。圧縮されていない文字列の内容に関係なく、raw[] には 2 バイトのデータしか取得できないようです。
unicode - 日本語のマシンで zlib を使用するにはどうすればよいですか?
zlibを使用して文字列を圧縮しようとしています(現在の 1.2.3 バージョンの zlib と zlib 1.1.3 でこのコードを試しました)。 日本語のマシンで実行しない限り、私のコードは正しく動作します。ファイルを圧縮した後、暗号化しています。復号化は成功しますが、uncompress の呼び出しは -3 を返します (Z_DATA_ERROR
入力データが破損していることを意味します)。エラーがログに記録されていないため、例外がスローされておらず、圧縮関数が 0 を返していることがわかります ( Z_OK
、機能したことを意味します)。
したがって、問題は、行 " " または行 " ."のsCompressed
いずれかで文字列の整合性が失われていることだと思います あるいは、VB6 がの呼び出し中にの内容に役立つ何か愚かなことをしている可能性があります。私は、この関数の戻り値が後で壊れていないことを知っています.sCompressed = Left(sCompressed, lcompressedlen)
encryptedData.Content = sCompressed
sCompressed
compress
結論:
不審な文字セットを備えたマシンで実行すると、プログラムにエラー メッセージを表示して終了させることになりました。このバグがまだいくつかの設定に存在する可能性が非常に高く、エラーをトリガーする一部の設定には存在しない可能性もあります。ただし、ターゲット オーディエンスは英語を話す人であるため、Turkey Test に合格することは、実際にこれにより多くの時間を費やすことを正当化するほど重要ではありません。
blackberry - Blackberryアプリケーションで添付されたzipファイルからデータを取得するにはどうすればよいですか?
私はEclipseを使用してBlackberryのアプリケーションを構築しています。アプリケーションにzipファイルを添付しました。私を助けてください、私はアプリケーション開発でzipファイルからデータを取得する方法がわかりません。
c++ - 無料の非 gpl データ圧縮ライブラリ
データを保存するプロジェクトを書いているので、圧縮する必要があります。zlib を試しましたが、プロジェクトのボトルネックです。だから多分もっと速い解決策があります。高い圧縮率は必要ありませんが、非常に高速な圧縮を探しています。本当に無料で、独自のソフトウェアで使用できる zlib 以外のデータ圧縮ライブラリはありますか (プロジェクト、私が取り組んでいるプロジェクトは GPL ベースではありません)。私のプロジェクトは C++ 上にあり、テキストの char* 配列を圧縮する必要があります。
ruby - RubyでGzip文字列を解凍するには?
Zlib::GzipReader は「IO、または IO に似たオブジェクト」を取ることができます。ドキュメントに記載されているように、入力として。
文字列を解凍するにはどうすればよいですか?
compression - zlib解凍が失敗する
別のアプリケーションによって圧縮されたデータを解凍する必要があるアプリケーションを作成しています(これは私の制御の範囲外です-そのソースコードに変更を加えることはできません)。プロデューサーアプリケーションは、zlibを使用して、z_streamメカニズムを使用してデータを圧縮します。Z_FULL_FLUSHを頻繁に使用します(私の意見では、おそらくあまりにも頻繁ですが、それは別の問題です)。このサードパーティのアプリケーションは、それ自体のデータを解凍することもできるので、データ自体が正しいと確信しています。
私のテストでは、このサードパーティのアプリを使用して、次の単純なテキストファイル(16進数)を圧縮しています。
48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0d 0a
アプリから受け取る圧縮バイトは次のようになります(これも16進数です)。
78 9c f2 48 cd c9 c9 57 08 cf 2f ca 49 51 e4 e5 02 00 00 00 ff ff
同じデータを圧縮しようとすると、非常によく似た結果が得られます。
78 9c f3 48 cd c9 c9 57 08 cf 2f ca 49 51 e4 e5 02 00 24 e9 04 55
私が見ることができる2つの違いがあります:
まず、4番目のバイトはF2
ではなく。でF3
あるため、deflateの「finalblock」ビットは設定されていません。これは、ストリームインターフェイスが着信データの終わりがいつになるかを知らないためだと思います。そのため、そのビットを設定することはありませんか?
最後に、外部データの最後の4バイトはですが00 00 FF FF
、私のテストデータでは24 E9 04 55
です。このページで見つけた周りを検索
http://www.bolet.org/~pornin/deflate-flush.html
...これは同期またはフルフラッシュの署名です。
この関数を使用して自分のデータを解凍しようとするとdecompress()
、すべてが完全に機能します。ただし、外部データを解凍しようとすると、decompress()
関数呼び出しが失敗し、Z_DATA_ERROR
データが破損していることを示すリターンコードが返されます。
少し質問があります:
zlibの「uncompress」関数を使用して、z_streamメソッドで圧縮されたデータを解凍できるようにする必要がありますか?
上記の例では、最後の4バイトの意味は何ですか?外部で圧縮されたデータストリームと私自身のテストデータストリームの両方が同じ長さであるとすると、最後の4バイトは何を表しますか?
乾杯
c++ - deflateEndエラー'メッセージなし'種類:'Z_DATA_ERROR':-3
zlib v1.2.3でリンクするプログラムがあり、次のエラーが発生しました。
プログラムは、圧縮される多くの異なるファイルで正常に動作しました。
種類Z_DATA_ERRORの「nomsg」が何を意味するのか、そしてそれをデバッグする方法を知っている人はいますか?
php - gzdeflate()と大量のデータ
PHPでZIPファイルを作成するためのクラスを作成しています。サーバーで許可されていないことを前提としたZipArchiveの代替手段。それらの無料サーバーで使用するもの。
これはすでに機能しており、PHPでZIP構造を構築し、gzdeflate()を使用して圧縮データを生成します。
問題は、gzdeflate()ではファイル全体をメモリにロードする必要があり、クラスを32MBのメモリに制限して動作させたいということです。現在、16MBを超えるファイルを圧縮せずに保存しています。
データを16MBx16MBのブロックに圧縮する必要があると思いますが、2つのgzdeflate()の結果を連結する方法がわかりません。
私はそれをテストしてきましたが、最後の16ビットでいくつかの計算が必要なようです、ある種buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe
、それは機能しますが、すべてのサンプルに対してではありません...
質問:解凍せずに2つのDEFLATEDストリームを連結するにはどうすればよいですか?
delphi - ファイル圧縮の検出
Acess 2000 データベースにサード パーティのアプリケーションによって保存されたデータを読み取る必要があります。ベンダーはもはや質問をするために周りにいません。
1 つのテーブルには、圧縮されているように見える画像データが含まれています。これは、元のアプリケーションが blob フィールドの内容を xls エクスポート ファイルに埋め込まれた png 画像にエクスポートできるためです。
ADO と Delphi (TADOBlobStream) を使用してレコードの内容を抽出し、ディスクに保存して、16 進エディターで開きました。
16 進数の最初の 100 文字は次のとおりです。
F8 1B 00 00 07 C0 24 27 01 40 7F 20 EC 5D 24 2D 88 5C F0 A7 49 91 4A C4 EA 85 D2 98 6A B5 79 D7 B7 2B D5 48 F8 1B 00 00 07 C0 24 27 01 40 EC 7D 24 2D 88 5C F0 A7 49 91 4A C4 EA 85 D2 98 6A B5 79 D7 B7 2B D5 48 1A 9A C8 D3 54 E3 A3 E4 F5 29 C6 97 22 95 6A 8E 10 BD 3E 4B 0B 11 AA 6D A9 C6 87
これが一般的に使用されている圧縮アルゴリズムに準拠しているかどうか、誰か教えてください。bin ディレクトリにエンコーディング dll が存在するため、サード パーティ アプリケーションは zlib エンコーディング メソッドを使用しているように見えます。ただし、zlib を使用して解凍しても PNG は生成されません。参考までに、保存されたファイルは、XLS に埋め込まれた PNG ファイルのサイズの約 20% です。
ありがとう
api - VB6 API 宣言パス
モジュールに次の宣言があります。
関数内の次のコード行は、「ファイルが見つかりません: ZLIB.DLL」エラーで失敗します。
ZLIB を登録する必要がないことは承知しています。私の質問は、コードが機能するために ZLIB.DLL をどこに置く必要があるかということです。また、このコードが別のマシンで動作していることも知っています。現在、アプリケーションexeと同じフォルダーにZLIB.DLLがあります。
アップデート
私の安堵のために、コードはコンパイル時に機能します。ただし、IDE での実行中は機能しません (別のマシンでは機能します)。アプリケーション フォルダにまだ ZLIB.DLL があります。これは、DLL をロードするためにアプリケーション パスをチェックする必要があることを意味します。
これを回避するために、私は試しました:
そして、関数で:
これで DLL をロードできるように見えますが、代わりに「DLL 呼び出し規約が正しくありません」というエラーが表示されます。プロットが厚くなります。
解決した
答えはここにあるようです: http://www.zlib.net/DLL_FAQ.txt。それは私が推測するRTFMの場合です。そのため、奇妙なことに、IDE 内ではSTD_CALL
規約が有効ですが、一度コンパイルすると C スタイルの呼び出し規約で十分です。IDE の別のマシンで動作する理由はまだ説明されていません。うーん。
私を正しい方向に向けてくれてありがとう。