Работа с шестнадцатеричными числами в MySQL

У меня есть хранимая процедура, которая должна преобразовать шестнадцатеричные числа в десятичные эквиваленты. Я прочитал документацию для функции UNHEX (), но она возвращает двоичное значение. Что я хочу сделать, это что-то вроде этого:

CREATE PROCEDURE foo( hex_val VARCHAR(10) )
BEGIN
    DECLARE dec_val INTEGER;

    SET dec_val = UNHEX( hex_val );

    -- Do something with the decimal value
    select dec_val;
END

что я упустил? Как преобразовать значение UNHEX()'d в целое число без знака?

3 ответов


можно использовать CONV() функции для преобразования между базами.

SET dec_val = CONV(hex_val, 16, 10);

conv(hex_val, 16, 10)

преобразует число базы 16 в базу 10. Функция UNHEX делает что-то совершенно другое, она преобразует пары шестнадцатеричных цифр в символы.


cast(conv (hex_val, 16, 10) как целое число без знака) это должно решить проблему....