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

59

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

我尝试了第一步:

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

但是打印出来的值是十进制字符串而不是十六进制格式化字符串(以0x格式打印最终结果)。

  • 使用[:-2]删除该数字中的最后两个00
  • item[1]包含以0x形式表示的十六进制数

9
在Python中,没有所谓的十六进制数。只有数字。因此,您想要将十六进制字符串转换为数字,而不是十六进制数,然后您想要将数字打印为十六进制。 - Steve Jessop
1
@SteveJessop你的评论就是答案,而且两个答案都是评论 :) - Grijesh Chauhan
1
@GrijeshChauhan:不,这不是一个答案。问题中存在误解,但在纠正了这个误解之后,问题仍然存在,我的评论并没有回答它。答案才是关键。 - Steve Jessop
1
@SteveJessop 是的,但我认为应该在回答中解释的重要点是十六进制只是表示所有数字以相同方式存储(你所说的)。因此,在27720XAD4之间没有区别。因此,如果i = 0XAD4,那么print i将输出2772而不是ad4,OP需要使用%x - Grijesh Chauhan
3个回答

117

试试这个:

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

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

print hex(new_int)[2:]

4
我来翻译一下:我希望更加明确一点:使用int(hex_str, base=16)而不是int(hex_str, 16)。请注意,有关int()的文档在此处:https://docs.python.org/3/library/functions.html#int - Gabriel Staples

20

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

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

相反,您可以直接执行

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

1
我认为OP的困惑在于他区分了i = 0xad4i = 2772,当他打印i时。(并且似乎当我读到他的感谢时)无论如何,向你们两个加号,因为我不知道hex() - Grijesh Chauhan

0
使用格式字符串。
intNum = 123
print "0x%x"%(intNum)

或者使用hex函数。

intNum = 123
print hex(intNum)

1
它看起来像是reciprocal OP想要"字符串转十六进制数字",但您的回答是"数字转十六进制字符串"!! - Grijesh Chauhan
您可以通过添加以下事实来改进答案:以“0x”开头的十六进制数仅为用户方便而设。每个数字都存储在二进制中,而不是十进制中。 - Grijesh Chauhan
阅读标题,阅读问题,注意他的陈述问题'but it is only converting that number to int not in hex'。这就是第二次评论你的原因。 - Grijesh Chauhan
啊,你的意思是他把字符串误解为数字了? - Kei Minagawa
我已经更新了问题。现在看起来更清楚了。无论如何,我得到了答案。 - RATHI
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接