如何解决如何使用带有编解码器的解包
我试图运行用 3.5 之前版本编写的 python 脚本,当我运行它时出现错误,所以我试图更新该函数,但仍然无法找出问题所在。 这是我的代码:
# Main message decoding routine
# Input: diameter message as HEX string
# Result: class H with splitted message (header+message)
# AVPs in message are NOT splitted
def stripHdr(H,msg):
dbg = "Incoming Diameter msg",msg
logging.info(dbg)
if len(msg) == 0:
return ERROR
(sver,msg) = chop_msg(msg,2)
(slen,6)
(sflag,2)
(scode,6)
(sapp,8)
(shbh,8)
(sete,8)
dbg = "Split hdr","V",sver,"L",slen,"F",sflag,"C",scode,"A",sapp,"H",shbh,"E",sete,"D",msg
logging.debug(dbg)
#H.ver = ord(sver.decode("hex"))
H.ver = ord(codecs.decode(sver,'hex'))
H.flags = ord(codecs.decode(sflag,'hex'))
#H.len = struct.unpack("!I","\00"+slen.decode("hex"))[0]
H.len = struct.unpack("!I","\00"+codecs.decode(slen,'hex'))[0]
H.cmd = struct.unpack("!I","\00"+scode.decode("hex"))[0]
H.appId = struct.unpack("!I",sapp.decode("hex"))[0]
H.HopByHop = struct.unpack("!I",shbh.decode("hex"))[0]
H.EndToEnd = struct.unpack("!I",sete.decode("hex"))[0]
dbg="Read",H.ver,H.len,H.flags,H.cmd,H.appId,H.HopByHop,H.EndToEnd
logging.debug(dbg)
dbg = dictCOMMANDcode2name(H.flags,H.cmd)
logging.info(dbg)
H.msg = msg
return
我收到以下错误:
File "diameter-client.py",line 306,in <module>
stripHdr(CEA,codecs.encode(received,encoding="hex"))
File "/home/centos/pyprotosim_python3-master/libDiameter.py",line 786,in stripHdr
H.len = struct.unpack("!I",'hex'))[0]
TypeError: must be str,not bytes
非常感谢任何帮助。非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。