0

私のプログラムでは、bytearrayを受け取ります。最初の部分は実際には文字列であり、2番目の部分はバイト配列に変換された画像です。
このような:

<STX>1<US>length of picture<ETX> here are the bytes...  

現時点では、ETXの前後でパーツを分割するためにこれを持っています

string incomingMessage = incomingBytes.toString();

String messagePart = incomingMessage.substring(0, firstETX);
String dataPart = incomingMessage.substring(firstETX, incomingMessage.length());

その後、私は使用します

dataPart.getBytes();

それをバイト配列に変換し直します。

しかし、私のプログラムはバイトを画像に変換しないので、画像を含むバイトを変換するといくつかの問題が発生すると思います。

では、ETXの後のバイトを文字列に変換せずに取得するにはどうすればよいですか?または、元のバイトを保持して使用できるようにするにはどうすればよいですか?

どうも

4

2 に答える 2

1

<ETX>バイト配列内の位置を見つける必要があります。次に、それをのオフセットとして使用できますBitmapFactory.decodeByteArray

このコードをテストすることはできませんでしたが、アイデアを得る必要があります。

  final byte[] etxBytes = {'<','E','T','X','>'};
    int i =0 ;
    boolean found = false;
    for (i = 0; !found && (i < (incomingBytes.length-etxBytes.length)); i++){
        found = true;
        for (int j=i; (j-i) < etxBytes.length && found; j++){
            if (etxBytes[j-i]!=incomingBytes[j]){
                found = false;
                break;
            }
        }
    }
    if (found){
        int offset = i + etxBytes.length;
        Bitmap image = BitmapFactory.decodeByteArray(incomingBytes, offset, incomingBytes.length-offset);
    }
于 2012-08-14T14:32:13.000 に答える
0

この回答に従ってbase64エンコーディングを使用してバイトを文字列にエンコードしてから、デコードしてイメージに戻します。

于 2012-08-14T14:03:30.383 に答える