私は非常に特別な要件があります。 私はバイト配列をint、Stringのようなjava型を持つメッセージに変換する必要があるjavaアプリケーションを持っています。メッセージの構造は、以下のようにC++で定義されています。バイト配列をjava型に変換する
struct SMSMessage{
int id;
std::string name;
std::string source;
std::string destination;
std::string timestamp;
int type;
int status;
std::string message;
int mesg_type;
int mesg_sub_type; };
Javaアプリケーションで受け取るのはバイト配列です。 私はwheather C++アプリケーションがプロトタイプのバッファーを使用しているか、バイト配列に変換するために他の方法を使用しているのか分かりません。 しかし、バイトごとに配列を解析すると、値を取得できます。例えば -
ByteBuffer.wrap(Arrays.copyOfRange(byteArray, 0, 4)).getInt();
//byteArray -- reference to the incoming byte array
// 0, 4-- range of bytes for integer type
この行は(構造における最初のプロパティがintである)正しいID値を返します。
私の質問は - 私はこの構造のためのプロトを書く場合、私はjavaにこのメッセージを解析することができますか?
Java型にバイト配列を変換する他の方法はありますか?あなたは、直接Javaの構造に変換することができますが、私はそれがあると思いますかどうかわからない
私は言及することを忘れて、ソリューションはjava 5とjava 8で動作する必要があります – Gunwant
おそらくこのバイト配列はプロトコルバッファではないようですね。それがプロトコルバッファとしてエンコードされていた場合、最初の4バイトを読み取っても、おそらく偶然でない限り、最初の整数フィールドは直接渡されません。 –