在mysql中将二进制(16)列显示为十六进制

时间:2016-12-05 17:49:46

标签: mysql binary hex

给定二进制(16)列,如何将其值显示为十六进制数?我已经在控制台上试验了一下,我没有得到我期望的结果。可能是因为我没有正确地将数字转换成二进制文件吗?

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

但是输出很意外:3130

基本上,它似乎只取数字的十进制表示,并在每个数字前插入一个3数字,例如2 - > 3222 - > 3232678 - > 363738等等。

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

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

编辑:刚试过convert(678, binary)而不是cast,行为相同。

4 个答案:

答案 0 :(得分:2)

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

SELECT HEX(colname);

答案 1 :(得分:1)

使用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
...

答案 2 :(得分:1)

您还可以将 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

答案 3 :(得分:0)

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

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

默认情况下,BINARY数据类型被视为十进制字符串