首页 > 解决方案 > 在 Python 中执行 Ruby 的 array.pack 的等价方式

问题描述

我有一个看起来像这样的 Ruby 函数:

def domain_request
  pkt = "0300000c02f0800400010001"
  return [pkt].pack("H*")
end

基本上我想做的是在 Python 中执行相同的操作(如果您还可以提供对包格式的参考,将不胜感激)我试图从一个bytearray但是,我对此感到茫然观点。任何帮助将不胜感激,谢谢。

标签: pythonrubyequivalent

解决方案


这看起来像你想要的

from binascii import unhexlify

str = "0300000c02f0800400010001"
unhexlify(str)

虽然 ruby​​ 的输出看起来略有不同,但在 ruby​​ 和 python 中比较这些都是正确的,这段代码在 python 和 ruby​​ 中都有效:

s1 = "\x03\x00\x00\x0c\x02\xf0\x80\x04\x00\x01\x00\x01"
s2 = "\x03\x00\x00\f\x02\xF0\x80\x04\x00\x01\x00\x01"

s1 == s2 #=> true or True in python

推荐阅读