首页 > 解决方案 > 用字典中的十六进制值替换 int 值

问题描述

我有以下代码:

self.mapping = {
    120: A,
    216: B,
    169: C
}

我想要一种使用字节的十六进制表示而不是十进制的方法

一种方法是:

 self.mapping = {
        bytes.fromhex ('78'): A,
        bytes.fromhex ('D8'): B,
        bytes.fromhex ('A9'): C
 }

但是,当我这样做时,我会收到如下错误消息:

异常:在此行上找不到 Obj:obj = self.mapping.get (test, None) 如果 obj 为 None:raise Exception ("Obj not found")

在此代码序列的最后一行:

obj = self.mapping.get (byte, None)
        if obj is None:
            raise Exception ("Obj not found")

另外,据我所知,这不适用于旧的 Python。所以我想要一个在 3.2 和更新版本之外的 2.6 上工作的解决方案。我读到 bytestream 可能是处理十六进制值的解决方案,但我不确定它是否可以与字典一起使用,如果可以,语法将如何。

谢谢您的帮助

标签: pythondictionaryhex

解决方案


bytes.fromhex返回一个bytes值(字节序列),而不是直接返回一个字节。如果要将十六进制解析为 int,可以使用int

>>> int('78', 16)
120

如果它们首先是文字,Python 有十六进制 int 文字:

self.mapping = {
    0x78: A,
    0xD8: B,
    0xA9: C
}

推荐阅读