gpt4 book ai didi

MySQL - 实现将字符串编码为二进制字段的函数

转载 作者:行者123 更新时间:2023-11-29 11:12:43 27 4
gpt4 key购买 nike

在MySQL中有一个函数叫做UNHEX它采用类似 '1DB8948899F511E6A18374D02B45FC30' 的字符串并将其转换为比特序列,即二进制字段。这是我用来存储UUID的东西s。反向操作在函数HEX中实现.

我存储蛋白质序列,每个蛋白质序列都是有限的字母序列,最多有21个不同的字母。我不想将每个序列存储为明文,而是将它们存储为二进制字段。

因此我想实现一个自定义函数,类似于 UNHEX ,它将每个字母替换为给定的 5 位序列(这个位数量足够了)。我也会实现倒数。

如何实现这样的功能?

我查看了函数COMPRESS ,但当在长度约为 63、64 的序列上运行时,它会提供更长的输出,并且长度低于 150 的序列的压缩因子小于 1.6我将通过自定义函数实现的压缩系数。长度低于150的序列很多,因此,使用COMPRESS函数不会有太多收获。 .

我的 MySQL 版本是 14.14 Distrib 5.5.52,适用于 debian-linux-gnu (x86_64),你可以将蛋白质序列视为从 A 到 U 的有限字母序列(实际的字母在这里不相关,我将调整代码)。

我想要创建一个函数,它将由从 A 到 U 的这些字母组成的字符串作为参数,并将它们转换为位序列。自 2^4 < 21 <= 2^5 ,每个字母需要 5 位就足够了。

我正在考虑为 MySQL 制作一个插件来定义这两个函数。我是不是太过分了?有更容易的方法吗?如果是这样,这些功能是否可以通过编写成插件来提高效率?

最佳答案

我需要调整函数base64encode和base64decode。这些函数的源代码可以在这里找到:

https://github.com/y-ken/mysql-udf-base64/blob/master/base64.c

关于MySQL - 实现将字符串编码为二进制字段的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244595/

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