我正在尝试计算两个十六进制字符串之间的汉明距离。首先,字符串从基数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)。
我逻辑中的缺陷在哪里?
答案 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