0

MySQL でバイナリを 10 進数に変換しようとしましたが、大きな問題があります。

SELECT CONV(BINARY('10000000000000000000000000000000000000001111111100000000000000000'),2,10)

SELECT CONV(BINARY('11111111111111111111111111111111111111101111111111011110111100000'),2,10)

同じ間違った結果を与える: 18446744073709551615

ただし、bindec() PHP 関数を使用すると、それぞれ次のようになります。

3.6893488147386E+19 および 1.8446744073743E+19。これらの結果は予期されるものであり、SQL 要求の出力でそれらを取得します。

ご協力いただきありがとうございます !

4

1 に答える 1

0

簡単にするために、変換するすべての文字列が 65 文字であるとしましょう。つまり、ビットを 1 桁右にシフトすると、文字列が変換可能になります。したがって、次のようなものが機能する可能性があります。

SELECT CONV(LEFT(mystring,64))*2 + RIGHT(mystring,1); 
于 2013-01-16T14:34:30.517 に答える