用字典中的十六进制值替换int值

问题描述 投票:0回答:1

我有以下代码:

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上使用的解决方案。我读到字节流可能是处理十六进制值的解决方案,但我不确定它是否可以与字典一起使用,如果可以,语法如何。

感谢您的帮助

python dictionary hex
1个回答
1
投票

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

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

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

self.mapping = {
    0x78: A,
    0xD8: B,
    0xA9: C
}
© www.soinside.com 2019 - 2024. All rights reserved.