代码之家  ›  专栏  ›  技术社区  ›  m0j0

在MySQL中使用十六进制数

  •  10
  • m0j0  · 技术社区  · 17 年前

    我有一个存储过程,需要将十六进制数转换为十进制数。我已经阅读了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 回复  |  直到 17 年前
        1
  •  23
  •   Greg    17 年前

    你可以使用 CONV() 函数在基之间进行转换。

    SET dec_val = CONV(hex_val, 16, 10);
    
        2
  •  8
  •   Robert Gamble    17 年前
    conv(hex_val, 16, 10)
    

    将基数16转换为基数10。UNHEX函数的作用完全不同,它将成对的十六进制数字转换为字符。

        3
  •  7
  •   Phunny    16 年前

    强制转换(conv(十六进制值,16,10)为无符号整数)