如何告诉 protostuff 将 属性 打包为 fixed32 而不是 int32
How to tell protostuff to pack property to fixed32 and not int32
我正在尝试使用 protostuff 将以下 Java 对象序列化为 protobuf:
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());
我想获得固定大小的缓冲区,但 protostuff 将版本整数序列化为 varint 类型(用于表示整数的字节数根据整数大小而变化)
我如何告诉 protostuff 将特定的 属性 序列化为具有固定字节数的 fixed32
谢谢
RuntimeSchema
不允许您将 select fixed32
作为整数字段的类型。它只能使用 int32
/int64
.
您唯一可以做的事 - 您可以估计缓冲区的最大大小。每个 int32
最多占用 5 个字节。
我正在尝试使用 protostuff 将以下 Java 对象序列化为 protobuf:
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());
我想获得固定大小的缓冲区,但 protostuff 将版本整数序列化为 varint 类型(用于表示整数的字节数根据整数大小而变化)
我如何告诉 protostuff 将特定的 属性 序列化为具有固定字节数的 fixed32
谢谢
RuntimeSchema
不允许您将 select fixed32
作为整数字段的类型。它只能使用 int32
/int64
.
您唯一可以做的事 - 您可以估计缓冲区的最大大小。每个 int32
最多占用 5 个字节。