【发布时间】: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,或者换句话说1和0。 -
@Alnitak,帖子的标题更清楚了,示例查询是我只是在控制台中试验二进制数据类型,试图让它打印出预期的十六进制值。
-
不,这完全不清楚,因为
binary(16)没有意义 - 16 不是二进制数。 -
好的,我现在明白了 - 你有一个
binary(16)列,其中包含一些数据。只是做SELECT hex(colname) FROM table应该可以正常工作。如果没有,请详细说明,并停止在控制台中使用数字文字。