我想实现一个
replace
函数来用字符串替换字节,如下所示:
#!/usr/bin/env python3
import struct
def generate():
fd = open("a.bin","wb")
for i in range(0,36):
fd.write(i.to_bytes(1,"little"))
fd.close()
return
def replace(buf,target):
for i in range(0,len(target)):
buf[i] = target[i]
return
def main():
generate()
fd = open("a.bin","rb")
data = fd.read()
fd.close()
s = struct.Struct("<32s I")
x,y = s.unpack(data)
print(x)
target = "hello world"
replace(x,target)
print(x)
return
main()
但是报错:
TypeError: 'bytes' object does not support item assignment
我认为,这样更有效率:
def replace(buf,target):
b = bytes(target,'utf-8')
return b + buf[len(b):]
...
x = replace(x,target)