【问题标题】:How to define correctly dictionary with hexadecimal values?如何用十六进制值正确定义字典?
【发布时间】:2020-11-20 20:44:17
【问题描述】:

我有一个 if-elif 语句将十六进制值分配给变量BinValues,如下所示:

if a == "v1":
    BinValues = b'\xF2'
elif a == "v2":
    BinValues = b'\xD3'
elif a == "v3":
    BinValues = b'\x71\xC2'

由于十六进制值可能大于 3,因此为了使用多个 if 语句,我想使用字典来完成此任务。

我已经尝试如下,但出现错误。

BinValues  = { "v1": b'\xF2', "v2": b'\xD3', "v3": b'\x71\xC2' }    

但是当我打印dict BinValues的内容时,当我输入的值为b'\x71\xC2'时,键“v3”的值已更改为b'q\xc2'

>>> BinValues
{'v1': b'\xf2', 'v2': b'\xd3', 'v3': b'q\xc2'}

发生了什么事?谢谢

【问题讨论】:

    标签: python-3.x binary hex


    【解决方案1】:

    我认为它会是一样的。 Python 只是显示为 ascii 字符。我对十六进制值了解不多,但你去吧。 https://www.cisco.com/c/en/us/td/docs/ios/12_4/cfg_fund/command/reference/cfnapph.html

    我也尝试写入文件并得到相同的结果,除了一个奇怪的问号字符。这是相同的,因为q 的十六进制值是71

    【讨论】:

    • 感谢您的帮助和信息共享。现在明白了
    【解决方案2】:
    b'\x71\xc2' == b'q\xc2'
    

    因为

    b'\x71' == b'q'
    

    查看ASCII table,可以看到“hex 71”对应的是“q”。

    【讨论】:

    • 太好了,非常感谢您的回答和分享的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2013-12-22
    • 2019-07-27
    相关资源
    最近更新 更多