Я ищу создание UDP-пакета в соответствии с протоколом, который указывает макет пакета на бит-уровень, и я не уверен, как это сделать в Ruby , Мое понимание - это функции pack
и unpack
для массивов.BinaryString в Ruby с единственным битом для представления bool
http://ruby-doc.org/core-2.2.0/Array.html#method-i-pack
документация массив перечисляет целую кучу различных аргументов, которые могут быть использованы с pack
, но я не знаю, как упаковать логическое значение в качестве одного бита.
Формат Я пытаюсь добиться, как выглядит это.
Мое понимание было то, что я мог бы сделать что-то вроде:
[size_int, origin_as_int, tagged, addressable, protocol_int, source_int].pack "v1????V1"
Где вопросы знаки указывают, где я не знаю, как для представления полей. Я мог бы сделать что-то вроде
binary_string = ""
binary_string += "%02b" % origin_as_int
binary_string += (tagged ? "1" : "0")
binary_string += (addressable ? "1" : "0")
binary_string += "%012b" % protocol_int
munged_stuff = binary_string.to_i(2)
[size_int, munged_stuff, source_int].pack "v2V1"
Я полагаю? Чувствует себя плохо.
Пожалуйста, измените вопрос, чтобы включить код, который вы имеете до сих пор. –