Python字典自动将十六进制转换为小数?

Rya*_*n O 2 python hex dictionary decimal

我正在研究一个需要从另一个文件中读取字典的Python方法,该文件将代表键和值.

但似乎我遇到的问题是我发送的数字值的表示.例如,我的字典中的一些键看起来像这样:

id_dict = {
    'val_a': 0x0000,
    'val_b': 0x1000
}
Run Code Online (Sandbox Code Playgroud)

但我注意到,当我尝试遍历字典时,十六进制代替十进制值.即使在原始id_dict.py字典所在的位置,数字也会自动从十六进制转换.

这是我尝试迭代它的结果:

for k,v in id_dict.items():
    print(k,v)

#Results
val_a 0
val_b 4096
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么这些值以十进制形式表示而不是以它们最初存储在的十六进制形式表示?提前致谢!

如果有办法停止自动转换,那么理解这一点也很棒!

use*_*ica 7

有人可以告诉我为什么这些值以十进制形式表示而不是以它们最初存储在的十六进制形式表示?

它们最初并非以十六进制存储.Python不会跟踪任何有关base的信息; 无论您是键入0x1000还是4096在源代码中,它都是相同的数字,而Python以相同的方式存储它.

当Python打印一个数字时,它必须选择一个基数来显示它,默认值总是十进制.如果要以不同方式打印它,则需要指定不同的方式来执行字符串转换,例如hex函数:

>>> print 0x1000
4096
>>> print hex(0x1000)
0x1000
Run Code Online (Sandbox Code Playgroud)