Конвертировать шестнадцатеричный в двоичный в MySQL - PullRequest
14 голосов
/ 18 апреля 2011

В настоящее время я ищу функцию в MySQL, чтобы выполнить преобразование между шестнадцатеричной строкой в ​​двоичное представление, например:

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

Я уже пробовал

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

, но не получилрезультаты, которые я хочу.

Ответы [ 2 ]

22 голосов
/ 18 апреля 2011

Использование 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, иначе вы можете получить ошибочные результаты.

11 голосов
/ 12 августа 2016
UNHEX('hex string')

Будет интерпретировать каждую пару символов в строке, переданной в функцию, как два шестнадцатеричных символа и попытаться преобразовать это в двоичное число (двоичный формат в mysql).Таким образом, вы можете преобразовать строку в двоичный файл.Тем не менее, это не будет отображать содержимое в виде строки двоичных цифр.Скорее, каждые 2 байта в результирующей строке преобразуются в кодировку конкретного символа (например, utf8).

...