2017-09-20 2 views
0

, 난 배열 바이트protobuf를 사용하여 C#과 java 사이의 문자열을 비 직렬화하는 방법? C#에서

이 바이트 배열 (13 개) 요소를 포함하는, 2 프리픽스를 포함한다 ("여러분 안녕하세요")는 네트워크를 통해 VAR 바이트 = Serializer.SerializeObject 그것을 보낼 문자열 직렬화 protobuf 그물을 사용하여 태그는 문자열 길이에 대해 0x10, 0x0b로 시작합니다.

자바에서 비 직렬화를 시도 했으므로 ByteString을 사용하여 해당 바이트 배열을 문자열로 변환했습니다. 오류 문자열이 있습니다. \ n 안녕하세요, 세계! 이것은 java가 접두사 태그를 무시하지 않는다는 것을 의미합니다.

아무도 아는 이유가 무엇입니까? 고마워!

답변

0

protobuf 형식 벗은 데이터를 허용하지 않기 때문에 protobuf - 그물 해석 Serializer.Serialize("Hello, world")는 형식의 메시지 인 것처럼 :

message Foo { 
    optional value = 1; 
} 

당신이 가진 것처럼 - C#을 측면에서 - 사용 :

Serializer.Serialize(new Foo { value = "Hello, world") }); 

을 0x10 등 필드 1 필드 마커입니다

혹시,이 도구는 수도 스키마를 모르고 인코딩 된 메시지의 내부를 확인하려면 도움 : https://protogen.marcgravell.com/decode

관련 문제