web-dev-qa-db-ja.com

MySQLで16進数を2進数に変換する

現在、MySQLで関数を検索して、16進文字列から2進表現への変換を行っています。例:

0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111

私はすでに試しました

UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)

しかし、私が望む結果が得られませんでした。

16
Dels

CONV()関数を使用します:

_CONV(string, 16, 2)
_

入力に応じた長さを持つには:

_LPAD(CONV(string, 16, 2), LENGTH(string)*4, '0')
_

CONV()は64ビット精度で動作するため、64ビットを超えて変換することはできません。したがって、これも使用できます。

_LPAD(CONV(string, 16, 2), 64, '0')
_

LENGTH(string) <= 16を確認する必要があります。そうしないと、誤った結果が得られる可能性があります。

23
ypercubeᵀᴹ
UNHEX('hex string')

関数に渡された文字列内の文字の各ペアを2つの16進文字として解釈し、それを2進数(mysqlの2進形式)に変換しようとします。このようにして、文字列をバイナリに変換できます。ただし、これではコンテンツが2進数の文字列として表示されません。むしろ、結果の文字列の各2バイトは、特定の文字エンコード(utf8など)に変換されます。

14
picmate 涅