python这行是做什么的?

时间:2011-07-04 21:20:23

标签: python struct

我无法找出这条线在做什么: p = struct.pack(">b", x)+p[1:]

你能帮我解决这个问题吗?我认为它放在结构的末尾。是否也可以放置在该结构的中间?像p = struct.pack(">b", x)+p[2:]这样的事似乎没有帮助。关于这个的任何想法?

此致

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'