我无法找出这条线在做什么:
p = struct.pack(">b", x)+p[1:]
p = struct.pack(">b", x)+p[2:]
这样的事似乎没有帮助。关于这个的任何想法?
此致
答案 0 :(得分:3)
它将p
的第一个字节替换为表示x
值的字节。您可能已经或可能没有阅读此内容,但here is the documentation for the struct
module。
编辑:要替换第二个字节,请尝试以下操作:
p = p[:1] + struct.pack(">b", x) + p[2:]
答案 1 :(得分:1)
作为所有字符串切片的替代方法,这是非常低效的,请考虑使用bytearray
>>> import struct
>>> p=bytearray('foobar')
>>> p
bytearray(b'foobar')
>>> p[4]=struct.pack(">b", 64)
>>> p
bytearray(b'foob@r')
bytearray有很多可用的字符串方法
>>> dir(p)
['__add__', '__alloc__', '__class__', '__contains__', '__delattr__',
'__delitem__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__',
'__subclasshook__', 'append', 'capitalize', 'center', 'count', 'decode',
'endswith', 'expandtabs', 'extend', 'find', 'fromhex', 'index', 'insert',
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'partition', 'pop', 'remove', 'replace',
'reverse', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
并且在完成变异后很容易转换回字符串
>>> str(p)
'foob@r'