我有以下代码:
self.mapping = {
120: A,
216: B,
169: C
}
我想要一种使用字节的十六进制表示代替十进制的方式
一种方法是:
self.mapping = {
bytes.fromhex ('78'): A,
bytes.fromhex ('D8'): B,
bytes.fromhex ('A9'): C
}
但是,当我这样做时,我收到这样的错误消息:
例外:找不到对象在这条线上:obj = self.mapping.get(测试,无)如果obj为None:引发异常(“找不到对象”)
在此代码序列的最后一行:
obj = self.mapping.get (byte, None)
if obj is None:
raise Exception ("Obj not found")
另外,据我所知,这不适用于旧的Python。所以我想要一个除了3.2和更高版本之外还可以在2.6上使用的解决方案。我读到字节流可能是处理十六进制值的解决方案,但我不确定它是否可以与字典一起使用,如果可以,语法如何。
感谢您的帮助
bytes.fromhex
返回bytes
值(字节序列),而不是直接返回字节。如果要将十六进制解析为一个int,可以使用int
:
>>> int('78', 16)
120
并且如果它们首先是文字,Python具有十六进制int文字:
self.mapping = {
0x78: A,
0xD8: B,
0xA9: C
}