【问题标题】:Python JSON String (containing hex) to HEXPython JSON字符串(包含十六进制)到十六进制
【发布时间】:2023-04-08 10:17:01
【问题描述】:

我正在尝试在十六进制范围之间获取随机十六进制值:

random.randint(0xfff000, 0xffffff)

我从 JSON 中得到了范围限制,作为一个字符串。

{"range": "0xfff000,0xffffff"}

如何将这些字符串(拆分后)转换为十六进制值?

【问题讨论】:

  • 请注意,“值”既不是十进制,也不是二进制,也不是十六进制。它只是表示,例如字符串,完全有位置值。

标签: python json string hex


【解决方案1】:

使用基数为16的内置int()函数:

>>> int('0xfff000', 16)
16773120
>>> int('0xfff000', 16) == 0xfff000
True

【讨论】:

  • +1,我从来不知道int 接受这样前缀的字符串。
  • 是的,我必须仔细检查它,正要写一个答案,先去掉0x,但很好的是没有必要。
【解决方案2】:

您可以使用以下内容:

from random import randint

d = {"range": "0xfff000,0xffffff"}
print randint(*(int(i, 16) for i in d['range'].split(',')))
# 16775837

然后扩展它来自定义你自己的随机整数函数,例如:

from random import randint
from functools import partial

d = {"range": "0xfff000,0xffffff"}
my_random = partial(randint, *(int(i, 16) for i in d['range'].split(',')))
print [my_random() for n in range(5)]
# [16776381, 16774349, 16776922, 16773212, 16775873]

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 2010-10-04
    • 2014-03-26
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2013-08-05
    • 2012-06-05
    相关资源
    最近更新 更多