私は理解できない問題に遭遇しました。問題の定義は次のとおりです。Db2/Linux環境のBlob列にいくつかのデータがあります。byte []がJDK圧縮を使用して圧縮された後にBlobがDB2に書き込まれました(これを行うコードはLinux環境で実行されています)。このデータの一部を読み取り(JDKを使用して)、Windows環境(開発環境)で解凍されたバイト配列から文字列を作成する簡単なプログラムを作成しようとしています。問題は、Blob(byte [])を解凍した後、解凍されたバイト配列の長さが通常、予想より1〜3バイト長くなることです。私が期待しているのは、オフセットフィールドと長さフィールドもデータベースに保存されているということです。したがって、この場合、解凍されたバイト配列の長さは通常、データベースに格納されている長さよりも長く、ほんの数バイトです。
例:データベースレコードにblobが含まれている、オフセット:0、長さ:260,409blobを解凍した後-
compressedByte[].length - 71,212
decompressedByte[].length - 260,412
new String(decompressByte[]).length() - 260,412
new String(decompressByte[]).subString(0, 260,409).length() - 260409
他のいくつかの入力レコードの場合、私が見ている違いは、長さが1〜3バイトの間のどこかにあります。
私はこの問題に少し戸惑っていて、この問題を理解するためにさらにデバッグを行うことができるように、誰かがヒントを提案できるかどうか疑問に思っています。これは、Linux環境でのバイトの保存/書き込み方法とWindowsでのバイトの読み取り方法に何らかの形で関係しているのではないかと思います。ご協力いただきありがとうございます。