- Утомляйтесь, если используете двоичную сериализацию. Sun JVM - Big Endian, и если вы на Intel x86, вы находитесь на маленькой конечной машине.
- Я бы использовал Java ByteBuffer для быстрой нативной сериализации. ByteBuffers являются частью библиотеки NIO, что, предположительно, выше, чем у «DataInput / OutputStreams».
- Будьте особенно устали от сериализации поплавков! Как было предложено выше, его безопаснее передавать все ваши данные в строки символов по проводке.
- На стороне C ++, независимо от сети, в какой-то момент у вас будет заполненный буфер данных. Таким образом, ваш код десериализации будет выглядеть примерно так:
size_t amount_read = 0;
data my_data;
memcpy(buffer+amount_read, &my_data.speed, sizeof(my_data.speed))
amount_read += sizeof(my_data.speed)
memcpy(buffer+amount_read, &my_data.length, sizeof(my_data.length))
amount_read += sizeof(my_data.length)
- Обратите внимание, что размеры базовых типов C ++ определены реализацией, поэтому вы примитивные типы в Java и C ++ don Прямо перевести.
- Вы можете использовать буферы Google Protocol . Мое предпочтительное решение для работы с различными структурами данных.
- Вы также можете использовать JSON для сериализации.
ответ дан Imran.Fanaswala 20 August 2018 в 12:43
поделиться