RESTサービスでバイト配列を送信しています。これはStringとして受信されています。ここにその抜粋があります。開始タグと終了タグ。今パース文字列JavaMEのバイト配列の再表現
[0,0,0,0,32,122,26,65,0,0,0,0,96,123,26,65,0,0,0,0,192,123,20,65,0,0,0,0,0,125,20,65,71,73,70,56,57,97,244,1,244,1,247,0,0,51,85,51,51,85,102,51,85,153,51,85,204,51,85,255,51,128,0,51,128,51,51,128,102,51,128,153,51,128,204,51,128,255,51,170,0,51,170,51,51,170,102,51,170,153,51,170,204,51,170,255,51,213,0,51,213,51,51,213,102,51,213,153,51,213,204,51,213,255,51,255,0,51,255,51,51,255,102,51,255,153,51,255,204,51]
誰もが実際に作業をBase64デコーダを持っているブラックベリーを必要とするbase64でエンコードされた文字列として、それを送信する前に示唆。しかし、悲しいかな、それは64k以上のファイルで失敗し、Iveはalsortを試しました。
とにかくこれは、IVEが試したものです:
str = str.replace('[', ' ');
str = str.replace(']', ' ');
String[] tokens = split(str,",");
byte[] decoded = new byte[tokens.length];
for(int i = 0; i < tokens.length; i++)
{
decoded[i] = (byte)Integer.parseInt(tokens[i]);
}
しかし、それは失敗します。分割がJAVAの実装のような場合found here.
論理的にはうまくいくはずですか?しかし、そうではありません。これはJavaME/Blackberryです。 Javaの回答は必要ありません(javaMEで動作しない限り)。
ウェブ上でイメージを絶えず転送しているときに、それは過度なことではありません。 Iveはbase64デコーダのさまざまなインプリケーションを試みましたが、それはいつもうまく動作しませんでした。デコードエラーをスローします。 64kを超える静的メソッドは解析できません。また、読み込み可能なメソッドは、デコード可能であるべきものに対してランダムに失敗します(64k未満の静的メソッドで動作します)。しかし、符号なしバイトの観測をありがとう! – Doomsknight
素晴らしい作品です。ありがとう。あなたが何をしたのかを説明するために(符号なしバイトの観点から)。スプリットコードに埋め込んでみるかもしれません。配列を二度通過するポイントはありません。 – Doomsknight
あなたが使用しようとしたbase64実装を見て、結果をローカルバッファに保存する代わりに書き換えます(デバイスの最大64kは私の推測となります)。ストリームを使用します。 output - おそらく出力がファイルなどに行くことができますか?おそらく、ほとんどの実装で最初に行われたのではなく、4バイトブロックごとにパディングを処理する必要があります。ラファエルの答えのリンクにあるリンクのコードは、良い基盤のように見えます。 – esej