0

我想知道一些事情,此时我使用 python ctypes 制作一些 wifi 框架结构,并使用 lorcon2 我可以将它们发送到局域网。我想将此结构转换为字节字符串以获得该结构的无符号十六进制表示。为此,我已经看到了两个实现此目的的功能。ctypes.string_at 和 ctypes.wstring_at 函数。我知道 ctypes.wstring_at 用于制作 unicode 字符串,但 ctypes.string_at 用于 ??? 我们可以得到哪种字符串?ascII 字符串??还是十六进制字符串??
假设 F() 可以将结构转换为无符号十六进制字节字符串:

    class d(Strcuture):
       _ fields _ = [("num",c_uint8),("char",c_char)]
    s = d(num = 129,char  = 'c')
    q = F(s)
    

如果我打印“q”,我想要这样的东西:
'\xe1\x63'
0xe1 是十六进制的 129 0x63 是十六进制
的 99
其中 'c' 在 ascII 中被编码为 99
并且再次使用所有这些,我搜索另一个函数以获取“q”中每个元素的确切字节值假设此函数是 wx(),因此它可以返回:
129 如果写入:wx(q[0])
99 如果我写入:wx(q [1])

谢谢

4

1 回答 1

0

既不需要F()也不wx()需要。

class d(Structure):
  _fields_ = [("num",c_uint8),("char",c_char)]

  def __str__(self):
    return struct.pack('Bc', self.num, self.char)

  def __getitem__(self, ix):
    if ix == 0:
      return self.num
    if ix == 1:
      return ord(self.char)
    raise IndexError('structure index out of range')
于 2012-07-22T16:52:45.920 回答