如何使用Excel来计算hex格式的按位异或?

我有两个单元格与一串位:

1747F6001E00DB2XXXXX28FE5257645C

1C6262C8DBF510F655XXXXXA3BDA58AC

我想XOR二者在一起,以便结果将如0B2594C8C5F5CXXXXX190014698D3CF0

我知道我需要在Excel中使用按位XOR操作,因为按位XOR计算器可以在线工作,但是它们使我可以在hex和二进制input数据之间进行select。 BITXOR应该可以工作,但对于hexinput不起作用。

用一个公式,文本到列固定宽度每个字符分开(说A1:AF1和A2:AF2):

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

复制到适合。 如果需要,在CONCATENATE中拼接成单个单元格中的string(或复制到Word中,并replace所有的选项卡, ^t ,无)。

不幸的是BITXOR直到Excel 2011 / Excel 2013才被引入。

SO33031399的例子

两个相等长度的hexstring的方法。

 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两个hex值的每个数字,因为不需要进位,因为它不是一个加法。

顺便说一句。 BITXOR只能工作到2 ^ 48-1。 你有一个值范围高达16 ^ 32-1。

Interesting Posts