1

RESTサービスを介してバイト配列を送信しています。文字列として受信されています。これがその抜粋です。開始タグと終了タグ付き。

[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でエンコードされた文字列として送信することを提案する前に、Blackberryが実際に動作するBase64デコーダーを持っている必要があります。しかし、残念ながら、64kを超えるファイルでは失敗し、Iveはalsortsを試しました。

とにかく、これは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実装のようなものです。

論理的には機能するはずですか?しかし、そうではありません。これはJavaME/Blackberry用です。Java Answersは使用しないでください(javaMEで動作する場合を除く)。

4

3 に答える 3

2

2つの問題。1つは軽微で、もう1つは苦痛です。マイナー:空白(ニキータが言及)メジャー:バイトへのキャスト... javaには符号なしバイトしかないため、intからバイトにキャストする場合は128以上が負の数になります。

    str = str.replace('[',' ');
    str = str.replace(']', ' ');
    String[] tokens = split(str,",");//String[] tokens = str.split(",");
    byte[] decoded = new byte[tokens.length];
    for (int i = 0; i < tokens.length; i++) {
        decoded[i] = (byte) (Integer.parseInt(tokens[i].trim()) & 0xFF);
    }
    for(byte b:decoded) {
        int tmp = ((int)b) & 0xff;
        System.out.print("byte:"+tmp);
    }

(ところで:base64エンコーダー/デコーダーの実装は特に難しいことではありません-プロジェクトにとって「やり過ぎ」かもしれませんが)

于 2012-04-27T11:34:12.640 に答える
1

角かっこをスペースではなく空の文字列に置き換えます。

str = str.replace('[', '');
str = str.replace(']', '');

あなたの場合、あなたは次の配列を持っています:

[" 0", "0", "0", ..., "204", "51 "]

最初の要素" 0"を整数に解析することはできません。

于 2012-04-27T11:11:38.160 に答える
1

バイト配列を送信するには、Base64でエンコードされた文字列を使用することをお勧めします。

J2ME用のBase64ライブラリへのリンクを含む投稿があります。

このようにして、バイト配列を文字列に変換し、後でこの文字列をバイト配列に変換することができます。

于 2012-04-27T12:00:33.107 に答える