如何使用Excel来计算十六进制格式的按位异或?
How to use Excel to calculate bitwise XOR in hexadecimal format?
我有两个带有一串位的单元格:
1747F6001E00DB2XXXXX28FE5257645C
和
1C6262C8DBF510F655XXXXXA3BDA58AC
我想对两者进行异或运算,结果类似于 0B2594C8C5F5CXXXXX190014698D3CF0
。
我知道我需要在 Excel 中使用按位异或运算,因为按位异或计算器可以在线工作,但它们让我可以在十六进制和二进制输入数据之间进行选择。 BITXOR 应该可以工作,但它不适用于十六进制输入。
两个等长的十六进制字符串的方法。
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
对两个十六进制值的每个数字进行异或,因为不需要进位,因为它不是加法。
顺便说一句。 BITXOR
最多只能工作 2^48-1。您的取值范围最大为 16^32-1。
使用公式,Text to Columns Fixed width each character separate (say A1:AF1 and A2:AF2):
=DEC2HEX(BITXOR(HEX2DEC(A1),HEX2DEC(A2)))
复制过来以适应。如果需要作为单个单元格中的字符串,与 CONCATENATE 拼接在一起(或复制到 Word 并替换所有选项卡,^t
,什么都不做)。
遗憾的是,直到 Excel 2011 年/Excel 2013 年才引入 BITXOR。
我有两个带有一串位的单元格:
1747F6001E00DB2XXXXX28FE5257645C
和
1C6262C8DBF510F655XXXXXA3BDA58AC
我想对两者进行异或运算,结果类似于 0B2594C8C5F5CXXXXX190014698D3CF0
。
我知道我需要在 Excel 中使用按位异或运算,因为按位异或计算器可以在线工作,但它们让我可以在十六进制和二进制输入数据之间进行选择。 BITXOR 应该可以工作,但它不适用于十六进制输入。
两个等长的十六进制字符串的方法。
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
对两个十六进制值的每个数字进行异或,因为不需要进位,因为它不是加法。
顺便说一句。 BITXOR
最多只能工作 2^48-1。您的取值范围最大为 16^32-1。
使用公式,Text to Columns Fixed width each character separate (say A1:AF1 and A2:AF2):
=DEC2HEX(BITXOR(HEX2DEC(A1),HEX2DEC(A2)))
复制过来以适应。如果需要作为单个单元格中的字符串,与 CONCATENATE 拼接在一起(或复制到 Word 并替换所有选项卡,^t
,什么都不做)。
遗憾的是,直到 Excel 2011 年/Excel 2013 年才引入 BITXOR。