我已经定义了一个结构:
for
为什么这种类型class test(Structure):
_fields_ = [('char_array', c_char * 255)]
a = test()
# prints <class 'bytes'>
print(type(a.char_array))
而不是bytes
类型?
我无法更改bytearray
中的值,因为字节不支持项目分配。即:char_array
如果我使用a.char_array[0] = 1
而不是这种情况;只是好奇为什么ctypes会将其转换为c_int
对象,而不是像bytes
那样将它保留为c_char_Array_255
?
如何将其转换为c_int * 255
并仍然相应地修改结构?
答案 0 :(得分:2)
键入c_char
映射到不可变类型。
使用类型c_byte
可以修改它。例如:
from ctypes import *
class test(Structure):
_fields_ = [('char_array', c_byte * 255)]
a = test()
print(type(a.char_array))
a.char_array[0]=ord('e')
a.char_array[1]=ord('x')
print(bytes(a.char_array).decode())
打印ex