2017-12-06 15 views
1

C++ 응용 프로그램에서 Java 응용 프로그램으로 데이터를 전송할 배열을 만들려고합니다. 두 가지 언어로 인해 Google 프로토콜 메시지를 어떻게 형식화합니까?Google 프로토콜 반복 값은 어떻게 구조화됩니까? 그들의 한계와 이점은 무엇입니까?

또한 제한 사항과 장점은 무엇입니까?

message Config { 
    repeated string types = 1; 
} 

가 나는 일도없는 것 같아요 :

지금까지, 나는 다음있다!

+0

"어떻게 유선으로 구성되어 있습니까?" - 또는 "내 앱에서 어떻게 이걸 사용합니까?" - 그들은 매우 다른 질문입니다. –

+0

내 말은, "이것은 어떻게 유선으로 구성되어 있습니까?" –

+0

인코딩 사양을 사용할 수 있습니다. "protobuf 인코딩"만 검색하면되지만 솔직히 말해서 라이브러리 구현 자만이 관심있어합니다. 기존의 도서관을 방금 사용하고 있다면, 도서관이 그 점을 염려해야합니다. –

답변

1

당신은 와이어에 의미하는 경우 - 다음 첫째 :

0x0a = "field 1, length prefixed" (strings are always length prefixed) 
{number of bytes as UTF8, varint-encoded} 
{that many bytes of UTF8} 

: 그것은 단순히 (반복 요소마다)로 구현되는이 경우에 그것에 대해 걱정 시리얼의 일이지만, 그래서 3 개의 아이템이 반복된다면 3 개의 0x0a, varint, 페이로드가 차례로 쌓이게됩니다. 정수 등의 원시적 인 형태의 경우, 전체 배열의 바이트 길이를 우선하여 요소마다의 헤더의 필요성을 없애는 「팩 된」인코딩이 있습니다. 처음에는, 배열 내용은 raw 이외 -tokenized 데이터.


당신은 호출자의 관점에서 을 의미하는 경우 : 그것은 아래로 구현하지만, 본질적으로 기대해야 할 몇 가지 익숙한 API - 그 프레임 워크에 공통. 이는 repeated 데이터가 배열/벡터로 표시되거나 Add 등의 API가있는 "컬렉션"클래스를 의미 할 수 있습니다. 그것은 목표 프레임 워크와 구현하는 저자의 기발한 것에 대해 합리적인 것에 전적으로 의존 할 것이다.