我正在尝试取一个字符串并将其更改为十六进制。我不想将字符串转换为十六进制只是更改它。例如
x = '13'
我想将x
更改为等于0x13
。我不希望它再成为一个字符串。
这可能吗?
很长一段时间我正试图用两位数的数字vi用户输入。用户将以两位数字块输入数字。这些数字必须更改为十六进制表示,因此它们可以与另一个十六进制数字进行Xor。
答案 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