gpt4 book ai didi

mysql - 你如何将一个整数转换成它的 CONDENSED 二进制等价物,例如MySQL 中的二进制 (3)

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:18 26 4
gpt4 key购买 nike

我正在执行哈希操作,我需要一致、准确、高效等附加原始字节。
我不能乱用 ASCII 编码的数字字符串,我只需要获取原始字节。

MySQL 的转换函数非常困惑,并且不会产生对像我这样的 SQL-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 ) ) ;

enter image description here

那么在这个例子中,我如何将一个整数值(例如 DECLARE 的整数变量或整数列)123456 转换为一个 3 字节的字符串?

编辑:
根据评论中的要求,SQL-Server 默认生成所需的结果:

enter image description here

这是我需要在 MySQL 中模拟的行为。

最佳答案

您可以使用 HEX() 生成一个字符串,其中包含整数的十六进制表示。然后 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 | 3

参见 demo on db<>fiddle

关于mysql - 你如何将一个整数转换成它的 CONDENSED 二进制等价物,例如MySQL 中的二进制 (3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58611436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com