Python3 ctypes c_char数组转换为不可变字节类型?

时间:2016-09-02 20:55:30

标签: python-3.x ctypes

我已经定义了一个结构:

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并仍然相应地修改结构?

1 个答案:

答案 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