2017-03-28 40 views
1

我试图序列化以下Java对象使用protostuff到的protobuf:如何分辨protostuff收拾财产fixed32而不是INT32

public class HeaderTest 
{ 

    private int version; 
    private UUID messageId; 

    public HeaderTest() {} // required by jackson 

    public HeaderTest(UUID messageId, int version) 
    { 

    this.messageId = messageId; 
    this.version = version; 

    } 

    public int getVersion() { 
    return version; 
    } 

    public void setVersion(int version) { 
    this.version = version; 
    } 

    public UUID getMessageId() { 
    return messageId; 
    } 

    public void setMessageId(UUID messageId) { 
    this.messageId = messageId; 
    } 
} 

用下面的代码:

Schema<HeaderTest> headerTestSchema = RuntimeSchema.getSchema(HeaderTest.class); 
byte[] headerTestBuff = ProtostuffIOUtil.toByteArray(headerTestInstance, headerTestSchema, LinkedBuffer.allocate()); 

我想要获得固定大小的缓冲区,但是原型会将版本整数作为varint类型进行序列化(字节量用于表示根据整数大小的整数变化)

Ho I W可以告诉protostuff连载的财产作为fixed32以字节为单位的固定量

感谢

回答

0

RuntimeSchema不允许您选择fixed32作为一个类型整型字段。它只能使用int32/int64

您可以做的唯一事情 - 您可以估计缓冲区的最大大小。每个int32最多需要5个字节。