【问题标题】:Replacing int values by hexadecimal values in a dictionary用字典中的十六进制值替换 int 值
【发布时间】:2019-10-14 22:49:10
【问题描述】:

我有以下代码:

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 为无: 引发异常(“找不到对象”)

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

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

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

感谢您的帮助

【问题讨论】:

  • 谢谢,更改代码以使用它。

标签: python dictionary hex


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2016-08-07
    • 2018-07-16
    • 2019-08-18
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多