在 MySQL 中将十六进制转换为二进制

发布于 2024-11-02 04:05:19 字数 281 浏览 0 评论 0原文

目前我在MySQL中搜索一个函数来进行十六进制字符串到二进制表示之间的转换,例如:

0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111

我已经尝试过

UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)

但没有得到我想要的结果。

Currently I search a function in MySQL to do conversion between hex string to binary representation, example:

0000 -> 0000000000000000
00AA -> 0000000010101010
FFFF -> 1111111111111111

I have already tried

UNHEX('00AA')
CAST('00AA' AS BINARY)
CONVERT('00AA', BINARY)

but didn't get the results I want.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柳若烟 2024-11-09 04:05:19

使用 CONV() 函数:

CONV(string, 16, 2)

根据输入获得长度:

LPAD(CONV(string, 16, 2), LENGTH(string)*4, '0')

由于 CONV() 使用 64 位精度,因此转换的位数不能超过 64 位,因此您也可以使用它:

LPAD(CONV(string, 16, 2), 64, '0')

并且您应该检查 LENGTH(string) <= 16 否则您可能会得到错误的结果。

Use CONV() function:

CONV(string, 16, 2)

To have length according to input:

LPAD(CONV(string, 16, 2), LENGTH(string)*4, '0')

As CONV() works with 64-bit precision, you can't have more than 64 bits converted, so you can use this as well:

LPAD(CONV(string, 16, 2), 64, '0')

and you should check that LENGTH(string) <= 16 or you may get erroneous results.

夜还是长夜 2024-11-09 04:05:19
UNHEX('hex string')

将传递给函数的字符串中的每一对字符解释为两个十六进制字符,并尝试将其转换为二进制数(mysql 中的二进制格式)。这样,您就可以将字符串转换为二进制。但是,这不会将内容显示为二进制数字字符串。相反,结果字符串中的每 2 个字节都会转换为特定的字符编码(例如 utf8)。

UNHEX('hex string')

Would interpret each pair of characters in a string passed into the function as two hex characters and try to convert that to a binary number (binary format in mysql). This way, you can convert a string to binary. However, this won't display the content as a string of binary digits. Rather, each 2 bytes in the resulting string converted to the specific character encoding (for example utf8).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文