这是我的代码(py3.1):
def get_string(self,chars):
return struct.unpack("{}s".format(chars),self.get_bin(chars))
b'MESH'
正在进入,(b'MESH',)
即将发布。为什么我没有收到字符串?
答案 0 :(得分:2)
如果您确定代码实际上是您运行的代码,那么在提问时会有所帮助。你展示的内容会出错。还要确保代码段包含所有信息,以便人们无需猜测。
>>> chars = "MESH" # guess
>>> binchars = b"MESH" # guess
>>> struct_fmt = "{}s".format(chars) # what you showed
>>> struct_fmt
'MESHs' ############### won't work
>>> import struct
>>> struct.unpack(struct_fmt, binchars)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: bad char in struct format ############ didn't work
>>> struct_fmt2 = "{}s".format(len(chars)) # what you probably did use
>>> struct_fmt2
'4s' #### looks much better
>>> struct.unpack(struct_fmt2, binchars)
(b'MESH',) ### did work
>>>
正如手册所说,“对于解包,生成的字节对象......”
答案 1 :(得分:0)
这有效:
return struct.unpack("{}s".format(chars),self.get_bin(chars))[0].decode('ASCII')
但是没有解释为什么unpack()
忽略了这样做。我将问题保持开放,直到答案为止。
编辑:杰森的进步:
return self.get_bin(chars).decode('ASCII')
真正嘲弄结构......
答案 2 :(得分:0)
unpack返回一个元组,在这种情况下是一个长度为1的元组。
添加
[0]
到你拥有的结尾,它应该给你所期望的。