python - 用字典中的十六进制值替换 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 可能是处理十六进制值的解决方案,但我不确定它是否可以与字典一起使用,如果可以,语法将如何。
谢谢您的帮助
解决方案
bytes.fromhex
返回一个bytes
值(字节序列),而不是直接返回一个字节。如果要将十六进制解析为 int,可以使用int
:
>>> int('78', 16)
120
如果它们首先是文字,Python 有十六进制 int 文字:
self.mapping = {
0x78: A,
0xD8: B,
0xA9: C
}
推荐阅读
- php - 将字符串拆分为两个 Datetime 对象
- java - 使用 Spock 测试应用参数约束
- pandas - 在没有 ref 变量的情况下运行 pandas 分析报告后如何保存它?
- azure-function-app - 从 C# Azure 函数访问 Azure 存储
- javascript - 如何在 Angular 7 中切换标签中的文本
- java - GraphQL 客户端服务器连接
- visual-studio-code - VSCode 在窗口弹出文本编辑器中隐藏内联 git 更改
- java - java.lang.NoSuchMethodError:io.dropwizard.jersey.setup.JerseyEnvironment.getResourceConfig()Lcom/sun/jersey/api/core/ResourceConfig;
- sql - 在 SQL Server 中使用 charindex 从字符串中子串一个单词
- javascript - Mathjs'全局配置是只读的'?