У меня есть объект, который я сериализирую, который содержит много двойных и структур двойных чисел, которые я посылаю по сети с protobuf-net. Проблема в том, что мне не нужна вся эта точность.
Например, у меня есть что-то вроде этого, когда внешняя библиотека возвращает double.
double Volts = Sampler.GetValue(); //Volts is a value like 4.35(...)
Но мне действительно нужны только две десятичные точки точности. Кодирование по проводам в двойном формате занимает 64 бита. Кодирование его в виде строки с двумя цифрами десятичной точности («4.35») на самом деле может занимать меньше места. Но тогда у меня есть проблемы с конверсией, которые нужно решить с обеих сторон.
Я искал варианты v2, и я не видел такой возможности. Я вижу, как можно сэкономить тонну пространства, если бы вы могли кодировать значения с плавающей запятой с переменной длиной точности.
Я думал о том, чтобы умножить на целое число, отправив его, а затем преобразовать обратно на дальний конец, но, насколько я могу судить, это потребовало бы от меня значительных изменений в объектах базового класса (и я используя параметр слияния во время десериализации).
Какие-нибудь идеи или умные обходные пути?
Кстати, protobuf-Net потрясающий с тоннами конфигурируемости. Спасибо за создание такой замечательной программы.