python将str更改为hex,而不是CONVERTING

时间:2014-01-07 11:50:37

标签: python hex

我正在尝试取一个字符串并将其更改为十六进制。我不想将字符串转换为十六进制只是更改它。例如

x = '13'

我想将x更改为等于0x13。我不希望它再成为一个字符串。

这可能吗?

很长一段时间我正试图用两位数的数字vi用户输入。用户将以两位数字块输入数字。这些数字必须更改为十六进制表示,因此它们可以与另一个十六进制数字进行Xor。

3 个答案:

答案 0 :(得分:4)

十六进制只是一个数字的表示;您可以在八进制中将相同的数字写为23,或者在二进制中编写00010011,或在十进制中编写19,它们都代表相同的值。

要对两个数字进行异或,他们不需要使用任何符号,只需要整数。您可以使用基数为16的int()函数将字符串解释为十六进制数字:

x = int(x, 16)

现在你有一个可以与另一个整理的整数:

x ^ 255

将反转所有位。请注意,Python整数的默认表示形式是十进制,因此如果您print x,那么您再次看到19,而不是13。要以十六进制表示数字,不使用0x前缀,请使用:

format(x, 'x')

其中format() function给定x格式化程序,再次返回给定整数的十六进制表示。 b会给你一个二进制字符串,o一个八进制字符串。

演示:

>>> int('13', 16)
19
>>> format(19, 'x')
'13'
>>> format(19 ^ 255, 'x')
'ec'

答案 1 :(得分:1)

x = int(x, 16)

这可能符合您的需要

答案 2 :(得分:1)

你想要这个吗?

>>> x = "13"
>>> x = int("0x" + x, base=16)
>>> x
19