2017-03-28 12 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個字節。