我有一个程序可以创建8192
个字节的数据。
现在我想更改下面的值returnBuffer
是我的数组:
serialBuff = returnBuffer[0x14:0x28]
DataToWrite = "15510580029600000000"
returnBuffer = returnBuffer.replace(serialBuff, DataToWrite)
但我得到的结果是:
AttributeError: 'c_char_Array_8192' object has no attribute
'replace'
有人可以帮帮我吗?
答案 0 :(得分:0)
错误是因为数组没有replace
方法。据我所知,他们没有面向公众的方法。
为了替换内容你可以执行1比1的分配(不需要用十六进制写计数器,但允许这样做,为什么不呢):
for i in range(0x14, 0x28):
returnBuffer[i] = DataToWrite[i - 0x14]
或使用切片(由@eryksun建议):
returnBuffer[0x14: 0x28] = DataToWrite.encode('utf-8')
其中一个应该可以解决问题。
作为一个更简单的值的例子:
In [71]: arr = 5 * ctypes.c_char
In [72]: c_arr = arr("0", "1", "2", "3", "4")
In [73]: print c_arr[:]
01234
In [74]: replaceVals = "321"
In [75]: for i in range(0x1, 0x4):
...: c_arr[i] = replaceVals[i - 0x1]
In [76]: print c_arr[:]
"03214"
或者,切片:
In [77]: c_arr[0x1: 0x4] = raplce.encode('utf-8')
In [78]: c_arr[:]
"03214"