現在、MySQLで関数を検索して、16進文字列から2進表現への変換を行っています。例:
0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111
私はすでに試しました
UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)
しかし、私が望む結果が得られませんでした。
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
を確認する必要があります。そうしないと、誤った結果が得られる可能性があります。
UNHEX('hex string')
関数に渡された文字列内の文字の各ペアを2つの16進文字として解釈し、それを2進数(mysqlの2進形式)に変換しようとします。このようにして、文字列をバイナリに変換できます。ただし、これではコンテンツが2進数の文字列として表示されません。むしろ、結果の文字列の各2バイトは、特定の文字エンコード(utf8など)に変換されます。