をバイトにStringをデコードに失敗しました。しかし、それはnull
を返しました。ここでは、コードは次のとおりです。Base64では、私は<code>Base64</code>を使用してバイト配列に<code>string</code>をデコードしようとしたアレイ
LZW lzw = new LZW();
String enkripEmbedFileString = Base64.encode(byteFile);
List<Short> compressed = lzw.compress(enkripEmbedFileString);
String kompress = "";
Iterator<Short> compressIterator = compressed.iterator();
while (compressIterator.hasNext()) {
String sch = compressIterator.next().toString();
int in = Integer.parseInt(sch);
char ch = (char) in;
kompress = kompress + ch;
}
byteFile = Base64.decode(kompress);
私はこのコードを以下のコードの最後の行で「byteFile」変数を呼び出すと、それはNullPointerException
を投げます。 "kompress"変数をチェックしていますが、nullではありません。それにはstring
が含まれています。
あなたが知る必要があるすべては、私はパラメータの文字列を必要とLZWで文字列を圧縮し、List<Short>
を返すコードで、です。そして、私はList<Short>
を見ることができるループのある文字列に変換します。
なぜ、Base64がString
をbyte[]
に変換できなかったのですか?その文字列はLZWで変更されたのですか? Iは、第1及びより文字列を解凍[]のバイトにはBase64で変換する解凍ストリングを返す場合
が、一方、問題はありません。できます。以下は動作するコードです:
//LZW Compress
LZW lzw = new LZW();
String enkripEmbedFileString = Base64.encode(byteFile);
List<Short> compressed = lzw.compress(enkripEmbedFileString);
String kompress = "";
Iterator<Short> compressIterator = compressed.iterator();
while (compressIterator.hasNext()) {
String sch = compressIterator.next().toString();
int in = Integer.parseInt(sch);
char ch = (char) in;
kompress = kompress + ch;
}
//Decompress
List<Short> kompressback = back(kompress);
String decompressed = decompress(kompressback);
byteFile = Base64.decode(decompressed);
私に説明してください。私の欠点はどこですか?
Base64デコーダに入力されている文字列を調べましたか?それは有効なBase64ですか? –
Base64はBase64でエンコードされたStringのみをデコードできますか? –
それは論理的です、はい。以前のBase64 _encode_の出力ではない文字列にBase64 _decode_を適用しようとした結果、どのような結果が予想されますか?それは意味をなさないでしょう。 –