如何使用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才被引入。
两个相等长度的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。