2015-10-09 2 views
0

У меня есть две клетки с последовательностью битов:Как использовать Excel для вычисления побитового XOR в шестнадцатеричном формате?

1747F6001E00DB2XXXXX28FE5257645C
и
1C6262C8DBF510F655XXXXXA3BDA58AC

Я хочу XOR два вместе, так что результат будет что-то вроде 0B2594C8C5F5CXXXXX190014698D3CF0.

Я знаю, что мне нужно использовать побитую операцию XOR в Excel, поскольку побитовые калькуляторы XOR работают в сети, но они дают мне возможность выбирать между шестнадцатеричными и двоичными входными данными. BITXOR должен работать, но он не работает для шестнадцатеричных входов.

+0

Почему я получаю downvoted? :( – Anonymoose

ответ

0

С формулой, Текст по столбцам Фиксированная ширина каждого символа отдельно (скажем, А1: А2 AF1 и: AF2):

=DEC2HEX(BITXOR(HEX2DEC(A1),HEX2DEC(A2))) 

скопированы в костюм. Сшивайте вместе с CONCATENATE, если это необходимо в виде строки в одной ячейке (или скопируйте в Word и замените все вкладки, ^t, ничем).

К сожалению BITXOR не был введен до Excel 2011/Excel 2013.

SO33031399 example

+0

Спасибо за ваши усилия. Хм, мне нравится этот подход, но я сейчас пытаюсь понять, как я мог бы сделать этот подход за 100 000 первых (строка 1 в вашем примере) и 1 уникальный второй вход (строка 2). – Anonymoose

+0

Перенесите данные Row2 для начала в AG1. Заполните A1: A100000, чтобы подойти. Откорректируйте формулу, чтобы дать результаты в BM1 (т. е. измените 'A2' на AG1') и скопируйте его, затем скопируйте AG1: CR1 в соответствии с требованиями. – pnuts

+1

Спасибо тонну. Это работает для меня! – Anonymoose

1

Подход для двух шестигранников одинаковой длины.

Sub approach() 

s1 = "1747F6001E00DB266F5728FE5257645C" 
s2 = "1C6262C8DBF510F6554E28EA3BDA58AC" 

If Len(s1) <> Len(s2) Then Exit Sub 

sRes = "" 
For i = 1 To Len(s1) 
    vRes = Val("&H" & Mid(s1, i, 1)) Xor Val("&H" & Mid(s2, i, 1)) 
    sRes = sRes & Hex(vRes) 
Next 

Debug.Print sRes 

End Sub 

XOR каждая цифра двух шестнадцатеричных значений, поскольку нет необходимости в переноске, поскольку это не дополнение.

КПП. BITXOR будет работать только до 2^48-1. У вас есть диапазон значений до 16^32-1.

+0

Чтобы быть абсолютно честным, я даже не уверен, как запустить ваш код. Я признаю, что я не эксперт, поэтому мне жаль, если вы чувствуете, что я зря трачу ваше время. У меня есть поместите его в модуль, но я не знаю, как на самом деле запустить макрос, когда я нажимаю «запустить макрос», ничего не происходит. – Anonymoose

+0

Посмотрите на ближайшее окно в редакторе VBA. См. https://support.microsoft .com/en-us/kb/165517 - прокрутите вниз до ИСПОЛЬЗОВАНИЯ НЕМЕДЛЕННОГО ОКНА –

Смежные вопросы