스트림의 위치 pos
에 정수 배열을 쓰고 있습니다. 기본적으로 int[]
이 있고 Serializer.SerializeWithLengthPrefix(stream, array, typeof(int[]), PrefixStyle.Fixed32, -1);
을 사용합니다. 이것에 의해, 올바른 접두사의 길이의 배열이 스트림에 추가됩니다.protobuf-net 직렬화 된 배열의 k 번째 요소를 비 직렬화
임의의 인덱스에서 스트림의 요소를 deserialize하려고합니다. 한 가지 방법은 pos + (index*fixedLength)
에 의해 스트림을 검색하는 것이지만이 배열의 정수는 DataFormat.Default
을 사용하여 작성되며 varient 길이 인코딩이 생성됩니다.
변경할 방법이 있습니까?
이 작업을 수행하는 한 가지 방법은 배열을 일부 래퍼 클래스의 속성으로 캡슐화하는 것입니다. 그런 다음 속성에 DataFormat.FixedSize
을 지정할 수 있습니다. 이러한 시나리오에 가장 적합한 방법입니까?
fixedLength
도 무엇이겠습니까? sizeof(int)
? 당신이 원하는 모든 파일에 고정 된 크기의 정수 (또는 다른 스트림) 인 경우
감사합니다, 이 울리 솔직히
예 질문의 표현 방법은 분명합니다. :) 그러나, 나는 실제 문제를 단순화하려고 애썼다. 저는 이것을 답으로 표시하고 훨씬 더 상세한 질문을 올릴 것입니다. 감사합니다, Iulian – Iulian
@ lulian 더 자세한 질문을 추가 할 때 알려주십시오 –
Marc - 고맙습니다 [link] (http://stackoverflow.com/questions/25951775/protobuf-net-lazy-streaming- 필드 비 직렬화). – Iulian