给定二进制(16)列,如何将其值显示为十六进制数?我已经在控制台上试验了一下,我没有得到我期望的结果。可能是因为我没有正确地将数字转换成二进制文件吗?
我有以下示例查询:select hex(cast(10 as binary))
,
但是输出很意外:3130
。
基本上,它似乎只取数字的十进制表示,并在每个数字前插入一个3
数字,例如2
- > 32
,22
- > 3232
,678
- > 363738
等等。
如果我指定二进制数据类型的长度(例如binary(16)
),我会得到相同的行为,除了它在右边填充所需的0
s数。
显然,这不是我想要的。我错过了什么?
编辑:刚试过convert(678, binary)
而不是cast
,行为相同。
答案 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数据类型被视为十进制字符串