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

gza*_*zak 3 mysql binary hex

给定一个binary(16)列,如何将其值显示为十六进制数?我一直在下面的控制台中进行实验,但未获得预期的结果。可能是我没有将数字正确转换为二进制吗?

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

但输出是相当意外:3130

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

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

显然,这不是我想要的。我想念什么?

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

lfj*_*eff 5

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

SELECT HEX(colname);


Ale*_*lex 5

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

mysql CLI 工具是否提供了一种以控制台友好的方式显示二进制数据的方法?

mysql --binary-as-hex
Run Code Online (Sandbox Code Playgroud)

或者

[client]
binary-as-hex = true
Run Code Online (Sandbox Code Playgroud)


小智 3

使用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
Run Code Online (Sandbox Code Playgroud)

十六进制转二进制表

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
...
Run Code Online (Sandbox Code Playgroud)