MySQL удаляет лидирующие нули при преобразовании шестнадцатеричного числа в двоичное - PullRequest
0 голосов
/ 11 сентября 2018

SELECT CONV('01ae0ac8', 16,2) удаляет ведущие 0 из двоичного выхода. Мне нужны эти 0 для выполнения проверок.

Есть ли способ преодолеть эту проблему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Спасибо @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.

Спасибо за ваш быстрый ответ.С наилучшими пожеланиями

0 голосов
/ 11 сентября 2018

Вы можете добавить ненулевой фиксированный символ в начало вашей входной строки перед преобразованием ее из base-16 в base-2. Например:

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

Это даст вам следующий вывод:

101000000001101011100000101011001000

Теперь, возвращая его обратно в base-16 для проверки контрольной суммы, сделайте следующее:

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

Это даст вам следующий вывод:

01ae0ac8

Примечание:

  1. CONCAT функция используется для добавления «а» в начало.
  2. SUBSTRING используется для удаления первого символа ('a') из преобразованной строки base-16.
  3. Функция LCASE используется для преобразования ее в нижний регистр в качестве входной строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...