Имея пакет
cPacket *pk
как я могу получить битовое представление этого? Например, в форме
std::bitset<pk->getBitLength()> pk_bits;
Моя конечная цель — применить к пакету схему кодирования, то есть кодирование Рида-Соломона.
Как прокомментировал @rcgldr, простой cPacket сам по себе не содержит никаких данных, по крайней мере, не в том смысле, как это делают реальные пакеты. И это не нужно в большинстве моделей, потому что они работают на более высоком, более абстрактном уровне, что облегчает работу с ними и ускоряет их запуск.
Информация, которая передается между узлами симуляции, — это то, что вы помещаете в поля ваших сообщений (желательно, сделанных на заказ с использованием компилятора сообщений OMNeT ++ из файлов .msg).
Это, однако, полностью не зависит от свойств bitLength / byteLength класса cPacket, который является просто числом, для которого можно установить любое значение для любого сообщения.
Конечно, вы можете выбрать модель реалистичного протокола, добавив в ваше сообщение поля, которые соответствуют реальному (изобразительному) заголовку сетевого протокола, например TCP или IP, или даже что-то, что вы только что создали. Но это по-прежнему не обеспечивает (надежного) доступа к содержимому в виде последовательности байтов, поскольку не всегда тривиально, как отдельные поля должны быть сериализованы в простые октеты.
Для этого, например, в INET предусмотрены отдельные классы * [De] Serializer для ряда пользовательских типов сообщений. Вы можете сделать то же самое со своим, если хотите.
Более простым решением было бы представить любую полезную нагрузку в пакете, добавив std::vector<unsigned char>
или даже std::bitset
если ты предпочитаешь это. И просто обрабатывайте эту часть отдельно от легкодоступных полей, применяя любую кодировку к ее содержимому.
И, наконец, как и в случае с любым вопросом, например, «как добавить библиотеку шифрования в симуляцию и использовать ее для преобразования пакетов»: вы уверены, что добавляете настоящий побайтовый кодировщик / сериализатор / и т. Д. к моделирование правильный выбор для достижения того, что вы пытаетесь сделать? Я имею в виду, это может быть, и это возможно, но могут быть лучшие / более простые / более быстрые способы. С точки зрения моделирования.
Других решений пока нет …