1

Python 構造体のpack('<B',1)値は 1 バイトに正しくパックされ<01>ますが、ctypes では同様の結果を得ることができません。

ctypes で同じ結果を得ることは可能ですか?

c_byte4バイトのよう<01000000>です。

サンプルコードを追加しました。

class TEST(Structure):
    _fields_ = [("int", c_int),("byte", c_byte)]

test = TEST(2,1)
print test.int
print test.byte

#bytes
print hexlify(buffer(test)[:])

今印刷は

2
1
0200000001000000

バイトは 0200000001 である必要があります。バッファ呼び出しのためですか、それともバイト アライメントを何らかの方法で宣言する必要がありますか?

4

1 に答える 1

2

これは、配置/パディングが原因である可能性が高いため、次の_pack_設定を使用します。

class TEST(Structure):
    _pack_ = 1
    _fields_ = [("int", c_int),("byte", c_byte)]

test = TEST(2,1)    
print hexlify(test)

印刷します0200000001

于 2012-11-14T11:56:31.470 に答える