我正在执行散列操作,并且需要一致、准确、高效地追加原始字节等等。
我不能乱搞ASCII编码的数字字符串,我只需要得到原始字节。
MySQL的转换函数非常令人困惑,而且不会产生像我这样的Server人员认为很明显的结果。
例如,BINARY 123456生成一个带有6个字符的ASCII编码字符串,而不是看似明显的BINARY ( 3 )字符串00000001 11100010 01000000 (又名0x01E240 )。
到目前为止,获得正确转换的唯一方法是分配十六进制文本--这在运行时显然是不切实际的。
SET @int_value = 123456 ; -- Decimal value
SET @hex_value = 0x01E240 ; -- The same value, in hexadecimal,
-- 6 hex digits = 3 bytes
SELECT LENGTH ( BINARY @int_value ) , LENGTH ( BINARY @hex_value ) , LENGTH ( BINARY HEX ( @int_value ) ) ;

因此,在本例中,如何将整数值(例如,DECLARE'd整数变量或整数列) 123456转换为3个字节的字符串?
编辑:
按照注释中的请求,Server在默认情况下生成所需的结果:

这就是我需要在MySQL中模仿的行为。
发布于 2019-11-01 10:38:11
可以使用六角()生成具有整数十六进制表示形式的字符串。然后UNHEX()将该字符串转换为二进制值:
SET @int_value = 123456; -- Decimal value
SET @bin_value = UNHEX(HEX(@int_value));
SELECT @int_value, HEX(@bin_value), LENGTH(@bin_value);结果:
@int_value | HEX(@bin_value) | LENGTH(@bin_value)
-----------|-----------------|-------------------
123456 | 01E240 | 3https://stackoverflow.com/questions/58611436
复制相似问题