H,我试图在Python中对两个字符串(应该先变成十六进制)进行异或运算。 我知道有一种方法是可行的:
def xor_two_str(str1, str2):
return hex(int(str1,16) ^ int(str2,16))
但我尝试过这样的事情:
def change_to_be_hex(str):
return hex(int(str,base=16))
def xor_two_str(str1,str2):
a = change_to_be_hex(str1)
b = change_to_be_hex(str2)
return hex(a ^ b)
print xor_two_str("12ef","abcd")
这将返回类型错误:^不应在str,str之间使用。 我不知道为什么。
而且这个功能也不起作用:
bcd = change_to_be_hex("12ef")
def increment_hex(hex_n):
return hex_n + 1
result = increment_hex(bcd)
print result
错误消息是:TypeError:无法连接“str”和“int”对象 我觉得这太奇怪了
谢谢你!
嗨, 下面的函数返回
hex()
的结果,其中returns a string。应该对整数使用
^
运算符。我不确定这就是你要找的结果。如果要将两个字符串进行异或,则表示要将一个字符串的每个字符与另一个字符串的字符进行异或。然后应该将每个char或str1的
ord()
值与str2的每个char的ord()
值进行异或。或一行:
hex
返回一个字符串,因此您试图将两个字符串进行异或。应该解决这个问题。
相关问题 更多 >
编程相关推荐