【发布时间】:2022-01-06 22:21:49
【问题描述】:
谁能帮我解决这个问题 编码方法不起作用,我找不到原因
def encode_OctetString(A,flags,data):
fs="!"+str(len(data))+"s"
dbg="Encoding String format:",fs
logging.debug(dbg)
ret=struct.pack(fs,data).encode("hex")
pktlen=8+len(ret)/2
return encode_finish(A,flags,pktlen,ret
错误代码
File "/home/ubuntu/diameter-test/libDiameter.py", line 434, in encode_OctetString
ret=struct.pack(fs,data).encode("hex")
struct.error: argument for 's' must be a bytes object
【问题讨论】:
-
请向我们展示整个错误。
-
我刚刚编辑了问题:)
-
你能分享一下这个函数的调用实际上导致了错误吗?此外,您发布的代码似乎已在
,ret处缩短,因为没有右括号。最后,encode_finish是什么? -
你能包含完整的堆栈跟踪吗?
-
请注意,
struct.pack()通常会返回bytes和bytes没有.encode()方法,只有.decode()一个 - 您是否尝试先解码然后重新-编码为"hex"?
标签: python python-3.x decode encode