Я новичок, чтобы повысить сериализацию, но мне это кажется очень странным.форсировать сериализацию шестнадцатеричное десятичное кодирование данных
У меня есть очень простой класс с двумя членами
int number // always = 123
char buffer[?] // buffer with ? size
так что иногда я установить размер, чтобы buffer[31]
затем сериализовать класс
22 serialization::archive 8 0 0 1 1 0 0 0 0 123 0 0 31 0 0 0 65 65
мы можем увидеть 123
и 31
так нет проблема здесь и в десятичном формате.
теперь изменить буфер для buffer[1024]
, так что я ожидал увидеть
22 serialization::archive 8 0 0 1 1 0 0 0 0 123 0 0 1024 0 0 0 65 65 ---
это реальный результат
22 serialization::archive 8 0 0 1 1 0 0 0 0 123 0 0 0 4 0 0 65 65 65
импульс перешел заколдовать только размер буфера?
Обратите внимание, что другое значение все равно десятичное.
Итак, что произойдет, если я переключу число от 123 до 1024?
Я бы предположил, что 040?
22 serialization::archive 8 0 0 1 1 0 0 0 0 1024 0 0 0 4 0 0 65 65
Если это по дизайну, почему 31 не преобразуется в 1F? его непротиворечивость.
Это вызывает проблемы в нашей функции нагрузки для split_free, мы делали это
unsigned int size;
ar >> size;
, но, как вы могли догадаться, когда это 040, то truncs нулю :(
что является рекомендуемое решение этой
я использовал импульс 1.45.0, но я испытал это на импульсе 1_56.0 и это то же самое
EDIT:. образец serializat Функция ионного
template<class Archive>
void save(Archive& ar, const MYCLASS& buffer, unsigned int /*version*/) {
ar << boost::serialization::make_array(reinterpret_cast<const unsigned char*>(buffer.begin()), buffer.length());
}
MyCLASS является просто оболочкой на символ * с первым элементом без знака INT , чтобы сохранить длину, аппроксимирующим UNICODE_STRING
http://msdn.microsoft.com/en-gb/library/windows/desktop/aa380518(v=vs.85).aspx
Код те же, если длина 1024 или 31, поэтому я не ожидал, что это будет проблемой.
Вы должны показать код, который выполняет сериализацию. – Steve
Отредактируйте сообщение и разместите там код. Удостоверьтесь, что он имеет отступы в четыре пробела и должен также выделяться синтаксис. Это облегчит людям чтение и, скорее всего, поможет людям. – Steve
Вот так вот Стив. –