将十六进制转换为二进制时,MySQL去除前导零

时间:2018-09-11 10:30:44

标签: mysql binary

SELECT CONV('01ae0ac8', 16,2)从二进制输出中删除前导 0 。我需要这些 0 来执行检查。

有没有办法解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:1)

在将输入字符串从base-16转换为base-2之前,可以在输入字符串的开头添加一个非零的固定字符。 例如:

SELECT CONV(CONCAT('a','01ae0ac8'), 16,2)

这将为您提供以下输出:

101000000001101011100000101011001000

现在,将其重新转换为16位校验和时,请执行以下操作:

SELECT LCASE(SUBSTRING(CONV('101000000001101011100000101011001000', 2,16),2))

这将为您提供以下输出:

01ae0ac8

注意:

  1. CONCAT函数用于将'a'附加到开头。
  2. SUBSTRING函数用于从重新转换的base-16字符串中删除第一个字符('a')。
  3. LCASE函数用于将其转换为小写形式,作为输入字符串。

答案 1 :(得分:0)

谢谢@Madhur,您让我走上了正轨。

我执行了以下操作,并且似乎可以正常工作:

SELECT CONV(CONCAT('1','01ae0ac8'), 16,2) //I changed your a to 1
SELECT SUBSTRING(CONV('101000000001101011100000101011001000', 2,16),2,1) // Checking to see if the 1 is in the first position.

感谢您的及时答复。 亲切的问候