Преобразование hex в двоичный файл в MySQL
В настоящее время я ищу функцию в MySQL для преобразования между шестнадцатеричной строкой в двоичное представление, например:
0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111
Я уже пробовал
UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)
но не получил желаемых результатов.
Ответы
Ответ 1
Используйте функцию 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
или вы можете получить ошибочные результаты.
Ответ 2
UNHEX('hex string')
Будет интерпретировать каждую пару символов в строке, переданной в функцию, как два шестнадцатеричных символа и попытаться преобразовать их в двоичный номер (двоичный формат в mysql). Таким образом, вы можете преобразовать строку в двоичную. Однако это не отображает содержимое как строку двоичных цифр. Скорее, каждый 2 байта в результирующей строке преобразуется в конкретную кодировку символов (например, utf8).