【问题标题】:Convert hex to binary in MySQL在 MySQL 中将十六进制转换为二进制
【发布时间】:2011-08-07 15:37:50
【问题描述】:

目前我在 MySQL 中搜索一个函数来进行十六进制字符串到二进制表示之间的转换,例如:

0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111

我已经试过了

UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)

但没有得到我想要的结果。

【问题讨论】:

    标签: mysql sql binary hex


    【解决方案1】:

    使用CONV()函数:

    CONV(string, 16, 2)
    

    根据输入获得长度:

    LPAD(CONV(string, 16, 2), LENGTH(string)*4, '0')
    

    由于CONV() 使用 64 位精度,因此您不能转换超过 64 位,因此您也可以使用它:

    LPAD(CONV(string, 16, 2), 64, '0')
    

    您应该检查LENGTH(string) <= 16,否则您可能会得到错误的结果。

    【讨论】:

    • 谢谢,能不能一直显示为16位,试过00AA -> 10101010,能不能显示0000000010101010
    【解决方案2】:
    UNHEX('hex string')
    

    将传递给函数的字符串中的每一对字符解释为两个十六进制字符,并尝试将其转换为二进制数(mysql 中的二进制格式)。这样,您可以将字符串转换为二进制。但是,这不会将内容显示为二进制数字字符串。而是将结果字符串中的每 2 个字节转换为特定的字符编码(例如 utf8)。

    【讨论】:

    • @ekscrypto,解释了为什么 OP 看不到他使用 UNHEX 所期望的结果,尽管它正在做他实际期望它做的事情。
    猜你喜欢
    • 2012-06-26
    • 2016-08-28
    • 2013-07-25
    • 2023-03-25
    相关资源
    最近更新 更多