매우 구체적인 요구 사항이 있습니다. java 응용 프로그램을 가지고 있는데, 여기서 바이트 배열을 int, String과 같은 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; };
는 바이트 배열입니다. wheather C++ 응용 프로그램이 proto 버퍼 또는 바이트 배열로 변환하는 다른 방법을 사용하고 있는지 잘 모르겠습니다. 그러나 바이트 단위로 배열을 구문 분석하면 값을 얻을 수 있습니다. 예를 들어 -
ByteBuffer.wrap(Arrays.copyOfRange(byteArray, 0, 4)).getInt();
//byteArray -- reference to the incoming byte array
// 0, 4-- range of bytes for integer type
이 줄 정확한 ID 값을 반환한다 (구조에 우선하여 속성 INT이다).
내 질문은 - 이 구조체의 proto를 작성하면이 메시지를 java로 구문 분석 할 수 있습니까?
자바 유형에 바이트 배열을 변환하는 다른 방법이 있나요? 당신이 직접 자바 구조로 변환 할 수 있지만 내가 그것을 추측 확실하지
나는 그 해결책을 자바 5와 자바 8 – Gunwant
와 함께 작동해야한다고 말한 것을 잊지이 바이트 배열은 아마도 프로토콜 버퍼가 아닌 것 같습니다. 프로토콜 버퍼로 인코딩 된 경우 첫 번째 4 바이트를 읽는 것은 거의 일치하지 않는 한 직접 첫 번째 정수 필드를 제공하지 않습니다. –