为什么这个MySQL XOR查询返回0?

时间:2014-11-24 12:53:37

标签: mysql xor hamming-distance

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

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

这导致0。

独立运行

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

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

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

我逻辑中的缺陷在哪里?

1 个答案:

答案 0 :(得分: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

  

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

您需要将数字转换回xor