2017-02-05 2 views
1

Я пытаюсь выяснить, как взять XOR каждого байта в моей строке:Python XOR оператор шестнадцатеричные значения

string = "\xa3\xb4\x55" 

с 100000 (бинарное). Как я могу сделать это в python? Я попытался сделать это:

newString = "" 
for n in string: 
    new = n^0x20 
    newString.append(new) 

мне нужен выход NewString выглядеть

output = "\x83\x94\x75" 

, но я в настоящее время не получают, что :-(любая помощь будет оценили Спасибо!

ответ

1

Вам нужно будет преобразовать каждый символ в свой код, а затем выполнить xor на кодах символов. После этого вы затем преобразовать результат обратно в символ, в результате чего-то вроде этого:

string = "\xa3\xb4\x55" 

newString = "" 
for n in string: 
    new = chr(ord(n)^0x20) 
    newString += new 

print(newString) 

Here's a working example

1

Вам необходимо преобразовать в число, используя ord(..), а затем обратно к персонажу, используя chr(..).

>>> "".join(chr(ord(x)^0x20) for x in "\xa3\xb4\x55") 
'\x83\x94u' # 'u' => '\x75' 
Смежные вопросы