Androidアプリ(Java)で文字列を圧縮し、Pythonでサーバー上で解凍しようとしています。 Inflaterクラスを使用しようとしましたが、python側で「エラー:データの圧縮解除中にエラー-3:ヘッダチェックが正しくありません」というメッセージが表示されます。私はアプリがあることpythonで文字列を解凍するにはどうすればよいJavaで圧縮し、Pythonで解凍しますか?
String stringData = commentData == null ? sleepData.toString() : sleepData.toString() + commentData.toString();
byte[] bytes = stringData.getBytes("UTF-8");
int length = bytes.length;
Deflater deflater = new Deflater();
deflater.setInput(bytes);
deflater.finish();
byte[] compressedBytes = new byte[length];
deflater.deflate(compressedBytes);
deflater.end();
を:、私たちは圧縮するのDeflaterを使用しているAndroidの側で
data_string = zlib.decompress(compressed_string)
:pythonの側では、私は解凍したzlibを使用しています送信していますか?
ありがとうございます!
EDITS: これはAndroidから送信され、解凍コマンドに入力されているものです(ドットはちょうど同じものを示しています。最後に0が多く、最後に0bがあります) 78efbfbdefbfbdefbfbdefbfbd6e1b2 .... efbfbd190000000 ..... 0000 000000000b0b0b0b0b0b我々がしようとしている物事0b0b0b0b0b
:
- 新しいエラーを与えるdata_string = zlib.decompress(復号化され、-zlib.MAX_WBITS)、 : "データを解凍中にエラー-3:格納されたブロック長が無効です"
- data_最初のエラー "無効なヘッダーのチェック"を与えるstring = zlib.decompressobj(復号化された、15 + 32)とdata_string = zlib.decompress(compressed_string、16 + zlib.MAX_WBITS)。
どのようにサーバー/ Pythonの側へのAndroid/Java側からデータを送信していますか? –
関連:http://stackoverflow.com/questions/2424945/are-zlib-compress-on-python-and-deflater-deflate-on-java-android-compatible –
デフォルトでは 'Deflater'が生成するので動作します。 zlibフォーマット、 'zlib.decompress()'はデフォルトでzlibフォーマットが必要です。 'zlib.decompress()'に何を供給しているのかの最初の数バイトを16進数で入力できますか? –