如何将十六进制字符串转换为十六进制数字

Posted

技术标签:

【中文标题】如何将十六进制字符串转换为十六进制数字【英文标题】:How to convert a hex string to hex number 【发布时间】:2014-03-19 17:20:23 【问题描述】:

我想将一个十六进制字符串(例如:0xAD4)转换为十六进制数字,然后将 0x200 添加到该数字,并再次以 0x 的形式将该数字打印为字符串。

我尝试了第一步:

str(int(str(item[1][:-2]),16))

但是要打印的值是十进制字符串而不是十六进制格式的字符串(0x 格式)(我想以0x 的形式打印最终结果)

[:-2] 删除该数字的最后一个 00 item[1] 包含 0x 形式的十六进制数字

【问题讨论】:

Python 中没有十六进制数。只有数字。所以你想将一个十六进制字符串转换为一个数字,而不是一个十六进制数字,然后你想将一个数字打印为十六进制。 @SteveJessop 你的评论是答案,两个答案都是评论:) @GrijeshChauhan:不,这不是答案。这个问题包含一个误解,但在纠正了这个误解之后,问题仍然存在,我的评论没有回答它。答案确实如此。 @SteveJessop 是的,但我认为应该在回答中解释的重点是十六进制只是表示所有数字以相同的方式存储(你说)因此27720XAD4。所以如果i = 0XAD4 那么print i 将输出2772 而不是ad4 OP 需要使用%x Convert hex string to int in Python的可能重复 【参考方案1】:

试试这个:

hex_str = "0xAD4"
hex_int = int(hex_str, 16)
new_int = hex_int + 0x200
print hex(new_int)

如果您不喜欢开头的0x,请将最后一行替换为

print hex(new_int)[2:]

【讨论】:

我喜欢更明确:int(hex_str, base=16) 而不是int(hex_str, 16)。请注意int() 的文档在这里:docs.python.org/3/library/functions.html#int【参考方案2】:

使用带有第二个参数 16 的 int 函数将十六进制字符串转换为整数。最后使用hex函数将其转回十六进制数。

print hex(int("0xAD4", 16) + int("0x200", 16)) # 0xcd4

你可以直接做

print hex(int("0xAD4", 16) + 0x200) # 0xcd4

【讨论】:

我相信 OP 的困惑在于他在打印 i 时区分了 i = 0xad4i = 2772。 (当我读到他的感谢时似乎)无论如何+给你们两个,因为我现在没有hex( )【参考方案3】:

使用格式字符串

intNum = 123
print "0x%x"%(intNum)

hex 函数。

intNum = 123
print hex(intNum)

【讨论】:

看起来倒数 OP 想要“字符串到十六进制数字”,但你的答案是“数字到十六进制字符串”!! 您可以通过添加以下事实来改进答案:0x 前面的十六进制数字只是为了用户方便每个数字都以二进制而不是十进制存储。 我认为他想将整数转换为十六进制字符串。因为他已经把十六进制字符串转成整数了。 阅读标题,阅读问题,注意他的陈述问题'but it is only converting that number to int not in hex'。第二次评论你的原因。 啊,你的意思是他把String误认为是Number?

以上是关于如何将十六进制字符串转换为十六进制数字的主要内容,如果未能解决你的问题,请参考以下文章

如何将看起来像十六进制数字的字符串转换为php中的实际十六进制数字?

在JS中如何将字符串类型的十六进制转换为数字?

如何将我的十六进制字符串转换为数字? [复制]

如何在Java中将字符从字母字符转换为十六进制数字?

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]