バイト配列を含むデータグラムパッケージを受け取るアプリを開発しています。その情報を取得してオブジェクトに変換する必要があります。
ドキュメントを読みましたが、各情報のバイト配列上の位置が格納されていると書かれていますが、オブジェクトに対して正しく解析できないようです。最近、似たような仕事をした人はいますか?
バイト配列を含むデータグラムパッケージを受け取るアプリを開発しています。その情報を取得してオブジェクトに変換する必要があります。
ドキュメントを読みましたが、各情報のバイト配列上の位置が格納されていると書かれていますが、オブジェクトに対して正しく解析できないようです。最近、似たような仕事をした人はいますか?
ByteBufferを調べることをお勧めします。これにより、バイト配列を簡単にラップして、必要なものを抽出できます。
byte[] arr = ...;
ByteBuffer buff = ByteBuffer.wrap(arr);
int i = buff.getInt(); // interprets the next 4 bytes into an int
これは頻繁に行われることです。
位置がある場合は、各部分にバイト配列があります。
したがって、バイトと文字セットを引数として取るStringのコンストラクターを使用できます
intを作成するには、次のようにします。
int l = 0;
for(int i =0; i < 4; i++){
l <<= 8;
l ^= (long)b[i] & 0xFF;
}
(ビッグエンディアンでintを受け取ったと仮定します)
あなたは多くの情報を提供しませんでしたが、私はあなたが以下のリンクを見てみることをお勧めします:
文字列の場合、コンストラクターでバイト配列を渡す新しい文字列を作成できるはずです。
オブジェクトを送信していて、もう一方の端でオブジェクトを受信したい場合は、ObjectOutputStreamとObjectInputStreamを使用して処理するだけです。そうすれば、フォーマットが保持されます。
int I;
ObjectOutputStream.write(I)
int j;
J = (int)ObjectInputStream.read()