1

2 つの 16 進文字列間のハミング距離を計算しようとしています。最初に、文字列が基数 16 から基数 10 に変換され、次にそれらが xor され、ビットがカウントされます。

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

基数 from_base から基数 to_base に変換された数値 N の文字列表現を返します

数値に変換して xor にする必要があります

于 2014-11-24T13:16:36.780 に答える