Изменение поплавка на двойной - PullRequest
2 голосов
/ 01 апреля 2012

Если я изменю свое поле с плавающего на двойное, нарушит ли это обратную совместимость в моем формате?Это имеет смысл, но в моем тесте это не так.

С другой стороны, я предполагаю, что float и double имеют разные типы проводов, которые могут позволить protobuf-net правильно обрабатывать ситуацию и приводить.

Есть ли где-нибудь документы, которые охватывают такого рода вещи?

1 Ответ

3 голосов
/ 01 апреля 2012

ТЛ; др; версия: "все в порядке"

На уровне проводных соединений это разница между фиксированной 4-байтовой и 8-байтовой кодировкой, поэтому если вы сделаете это, будущие сериализации потребуют несколько дополнительных байтов на значение.

В случае с protobuf-net по умолчанию это очень простительно, так что не будет разрушать ваши существующие данные. Он пытается обработать как можно больше общих / вероятных изменений, и это обрабатывается нормально. Другие реализации могут быть более строгими, поэтому, если вы используете это для целей взаимодействия, я не могу делать никаких заявлений о «другом конце» (имеется в виду: какая-то другая реализация protobuf). Чтобы помочь с этим, существует также необязательный строгий режим / opt-in (по умолчанию отключен). Если вы включили , что , то only разрешено точное представление (так: 32-разрядное для числа с плавающей запятой и 64-разрядное для двойного).

...