1

我正在尝试计算两个十六进制字符串之间的汉明距离。首先,字符串从基数 16 转换为基数 10,然后对它们进行异或运算并计算位:

SELECT (CONV('b4124b0d195b2507', 16, 10)) ^ (CONV('eae26aebf1f139f9', 16, 10));

这导致 0。

独立运行

SELECT (CONV('b4124b0d195b2507', 16, 10));

SELECT (CONV('eae26aebf1f139f9', 16, 10));

给我我期望的答案(12975515996039881991 和 16925207911220722169)。

我的逻辑缺陷在哪里?

4

1 回答 1

0
 SELECT CONVERT((CONV('b4124b0d195b2507', 16, 10)), SIGNED) ^ CONVERT((CONV('eae26aebf1f139f9', 16, 10)), SIGNED)

是你想要的

根据文档的转换

http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv

返回数字 N 的字符串表示形式,从 base from_base 转换为 base to_base

您需要将数字转换回异或

于 2014-11-24T13:16:36.780 回答