2011-04-18 53 views
12

Actualmente busco en una función en MySQL para hacer la conversión entre cadena hexadecimal a representación binaria, ejemplo:Convertir hexadecimal a binario en MySQL

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

ya he intentado

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

pero no lo hizo obtener los resultados que quiero

Respuesta

20

Uso CONV() función:

CONV(string, 16, 2) 

Para tener una longitud de acuerdo a la entrada:

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

Como CONV() obras con precisión de 64 bits, no se puede tener más de 64 bits convertidos, por lo puede usar esto también:

LPAD(CONV(string, 16, 2), 64, '0') 

y usted debe verificar LENGTH(string) <= 16 o puede obtener resultados erróneos.

+0

gracias, siempre se puede mostrar como 16 dígitos, intenté 00AA -> 10101010, ¿puede mostrar 0000000010101010? – Dels

6
UNHEX('hex string') 

interpretaría cada par de caracteres de una cadena que se pasa a la función como dos caracteres hexadecimales y tratar de convertir eso en un número binario (formato binario en MySQL). De esta forma, puedes convertir una cadena en binaria. Sin embargo, esto no mostrará el contenido como una cadena de dígitos binarios. Más bien, cada 2 bytes en la cadena resultante se convierte a la codificación de caracteres específica (por ejemplo, utf8).

Cuestiones relacionadas