2

バイト配列を含むデータグラムパッケージを受け取るアプリを開発しています。その情報を取得してオブジェクトに変換する必要があります。

ドキュメントを読みましたが、各情報のバイト配列上の位置が格納されていると書かれていますが、オブジェクトに対して正しく解析できないようです。最近、似たような仕事をした人はいますか?

4

4 に答える 4

5

ByteBufferを調べることをお勧めします。これにより、バイト配列を簡単にラップして、必要なものを抽出できます。

byte[] arr = ...;
ByteBuffer buff = ByteBuffer.wrap(arr);
int i = buff.getInt(); // interprets the next 4 bytes into an int
于 2012-07-10T15:58:45.990 に答える
1

これは頻繁に行われることです。

位置がある場合は、各部分にバイト配列があります。

したがって、バイトと文字セットを引数として取るStringのコンストラクターを使用できます

intを作成するには、次のようにします。

int l = 0;
for(int i =0; i < 4; i++){      
   l <<= 8;  
   l ^= (long)b[i] & 0xFF;      
} 

(ビッグエンディアンでintを受け取ったと仮定します)

于 2012-07-10T16:01:49.143 に答える
0

あなたは多くの情報を提供しませんでしたが、私はあなたが以下のリンクを見てみることをお勧めします:

バイト配列をその数値に変換する方法(Java)?

文字列の場合、コンストラクターでバイト配列を渡す新しい文字列を作成できるはずです。

于 2012-07-10T16:00:06.227 に答える
0

オブジェクトを送信していて、もう一方の端でオブジェクトを受信したい場合は、ObjectOutputStreamとObjectInputStreamを使用して処理するだけです。そうすれば、フォーマットが保持されます。

int I;
ObjectOutputStream.write(I)

int j;
J = (int)ObjectInputStream.read()
于 2012-07-10T16:00:20.750 に答える