0

知りたいことがあります。現時点では、python ctypes を使用して wifi フレーム構造を作成し、lorcon2 を使用してそれらを LAN 経由で送信できます。この構造をバイト文字列に変換して、この構造の符号なし 16 進数表現を取得したいと考えています。この目的のために、これを達成する 2 つの関数を見てきました。ctypes.string_at および ctypes.wstring_at 関数。ctypes.wstring_at はユニコード文字列を作成するためのものですが、 ctypes.string_at は ??? のためのものであることは知っています どの種類の文字列を取得できますか?? ascII文字列?? または16進文字列??
F() が構造体を符号なし 16 進バイト文字列に変換できるとします。

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


「 q」を印刷する場合、次の よう

ものが必要です 。別の関数を検索して、「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 に答える