Преобразование hex в двоичный файл в MySQL

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

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') 

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