【问题标题】:Display binary(16) column as hex in mysql在mysql中将二进制(16)列显示为十六进制
【发布时间】:2017-04-20 04:50:41
【问题描述】:

给定一个 binary(16) 列,如何将其值显示为十六进制数?我一直在下面的控制台中进行试验,但没有得到我期望的结果。难道是我没有正确地将数字转换为二进制?

我有以下示例查询:select hex(cast(10 as binary)),

但输出相当意外:3130

基本上,它似乎只是采用数字的十进制表示,并在每个数字之前插入一个 3 数字,例如2 -> 32, 22 -> 3232, 678 -> 363738

如果我为二进制数据类型指定长度(例如binary(16)),我会得到相同的行为,除了它在右侧填充了所需数量的0s。

显然,这不是我想要的。我错过了什么?

编辑:刚刚尝试convert(678, binary) 而不是cast,同样的行为。

【问题讨论】:

  • 请更清楚您正在使用的输入和基础,以及您期望的输出
  • HEX() 表示用于存储该数据的字节值的十六进制表示。 3130 代表 ASCII 字符 49 和 48,或者换句话说 10
  • @Alnitak,帖子的标题更清楚了,示例查询是我只是在控制台中试验二进制数据类型,试图让它打印出预期的十六进制值。
  • 不,这完全不清楚,因为binary(16) 没有意义 - 16 不是二进制数。
  • 好的,我现在明白了 - 你有一个 binary(16) 列,其中包含一些数据。只是做SELECT hex(colname) FROM table 应该可以正常工作。如果没有,请详细说明,并停止在控制台中使用数字文字。

标签: mysql binary hex


【解决方案1】:

为什么要把事情复杂化?我只是用它来显示BINARY(16) 列的值:

SELECT HEX(colname);

【讨论】:

    【解决方案2】:

    使用 CONV 函数

    -- convert '10000'(16 in binary) in hex
    SELECT CONV('10000',2,16);
    -- Ouput: 10
    
    
    -- convert 'F' in hex to binary
    SELECT CONV('F',16,2);
    -- Output: 1111
    

    十六进制转二进制表

    Hexadecimal Binary
    0         0000
    1         0001
    2         0010
    3         0011
    4         0100
    5         0101
    6         0110
    7         0111
    8         1000
    9         1001
    A         1010
    B         1011
    C         1100
    D         1101
    E         1110
    F         1111
    10       10000
    11       10001
    ...
    

    【讨论】:

    • 我几乎可以肯定 OP 正在寻找将数字转换为 ASCII 十六进制值 DIGIT 2 -> 32(16) - 50(10)
    【解决方案3】:

    您还可以将 mysql 客户端设置为将二进制数据显示为十六进制,如下所述:

    Does the mysql CLI tool provide a way to display binary data in a console-friendly manner?

    mysql --binary-as-hex
    

    [client]
    binary-as-hex = true
    

    【讨论】:

      【解决方案4】:

      试试这个,你就会清醒了:

      select conv(cast(10 as binary), 10, 16);

      BINARY 数据类型默认为十进制字符串

      【讨论】:

        猜你喜欢
        • 2011-08-07
        • 2015-03-16
        • 2014-03-11
        • 2010-12-15
        • 2016-08-12
        • 2012-06-26
        • 2014-10-30
        • 2012-04-08
        • 2016-08-28
        相关资源
        最近更新 更多