gpt4 book ai didi

postgresql - Postgres : How to convert 16 bytes into 4 bytes by XOR-ing every 4 bytes

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

我有一个 16 字节的 md5 散列,我需要使用 XOR 将其“折叠”成 4 字节数据:{1st 4 bytes} XOR {2nd 4 bytes} XOR {3rd 4 bytes} XOR {4th 4字节}。然后我需要将结果转换为十六进制形式(8 个字符的字符串)。

我正在像这样生成我的散列(解码为十六进制,因为它看起来更容易处理):

SELECT decode(md5('test'), 'hex');

但就我所知。我不知道将 16 字节哈希拆分为 4 个 4 字节值,然后对这些 4 字节值进行异或的最佳方法。

最佳答案

不幸的是 docs对于可以用位字符串值做什么有点含糊,但提到了 substring 函数(语法在 string functions page 上),可用于从中提取部分:

select i1 # i2 # i3 # i4
from cast('x' || md5('test') as bit(128)) bits,
cast(substring(bits from 97 for 32) as int4) i1,
cast(substring(bits from 65 for 32) as int4) i2,
cast(substring(bits from 33 for 32) as int4) i3,
cast(substring(bits from 1 for 32) as int4) i4

注意:较低的位在其位串表示中具有较高的索引,f.ex.

select 3::bit(32)
-- will yield '00000000000000000000000000000011'

关于postgresql - Postgres : How to convert 16 bytes into 4 bytes by XOR-ing every 4 bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045373/

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