protobuf-netを使用すると、負のintに対してジグザグのエンコードを利用できますか?negative-intのprotobuf-net処理
負の値を持つオブジェクトプロパティをシリアル化しようとすると、protobuf-netは効率的なZigzagエンコーディングの代わりにfixed32/fixed64エンコーディングに戻ります。
など。
[ProtoContract]
internal class TestPoint
{
[ProtoMember(1)]
internal long Value;
}
var p = new TestPoint() { Value = -150 };
11バイトにシリアル化します。
var p = new TestPoint() { Value = 150 };
3バイトにシリアル化します。 ProtoWriter.csから
:
case WireType.Variant:
if (value >= 0)
{
WriteUInt64Variant((ulong)value, writer);
writer.wireType = WireType.None;
}
else
{
DemandSpace(10, writer);
...
WireType.SignedVariantを使用するには、シリアル化されたクラスのメンバーを飾るために方法はありますか?ソースコードでこれを行う方法が見つかりませんでした。
それ以外の場合、protobufを負の数値に使用すると、それ以外の優れたワイヤ圧縮の目的が無効になります。
助けてください!
よろしく、 マイク
http://stackoverflow.com/questions/41692470/protobuf-net-私は同じ質問があるあなたの助けが必要ですか? –