假設它是一個空值終止字符串,可以在陣列轉換爲char *
,並使用其value
。這是一個例子,情況並非如此。 「史密斯先生」
>>> class Person(Structure): _fields_ = [("name", c_ubyte * 8), ('age', c_ubyte)]
...
>>> smith = Person((c_ubyte * 8)(*bytearray('Mr Smith')), 9)
>>> smith.age
9
>>> cast(smith.name, c_char_p).value
'Mr Smith\t'
填補了數組,所以鑄造c_char_p
包括下一個字段的值,這是9(ASCII標籤),誰知道還有什麼,但是多少,直到它到達一個空字節。
相反,你可以用join
遍歷數組:
>>> ''.join(map(chr, smith.name))
'Mr Smith'
或者使用一個字節組:
>>> bytearray(smith.name)
bytearray(b'Mr Smith')
的Python 3:
>>> smith = Person((c_ubyte * 8)(*b'Mr Smith'), 9)
>>> bytes(smith.name).decode('ascii')
'Mr Smith'
的最佳方式打印任何對象是一個給出所需的輸出。除非你不指定你想要的輸出是什麼,否則只能說這個。 – Bakuriu
我編輯了這個問題 – Awalias