mysql在将十六进制转换为二进制时去掉前导零

lb3vh1jj  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(519)

SELECT CONV('01ae0ac8', 16,2) 从二进制输出中删除前导0。我需要这些0来执行检查。
有没有办法克服这个问题?
谢谢您

rvpgvaaj

rvpgvaaj1#

谢谢你@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.

谢谢你的及时回复。谨致问候

lx0bsm1f

lx0bsm1f2#

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

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

这将为您提供以下输出:

101000000001101011100000101011001000

现在,在将其重新转换回base-16进行校验和时,请执行以下操作:

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

这将为您提供以下输出:

01ae0ac8

注:
concat函数用于将“a”附加到开头。
substring函数用于从重新转换的base-16字符串中删除第一个字符(“a”)。
lcase函数用于将其转换为小写,作为输入字符串。

相关问题