从 Postgres 到 Rails 的哈希转换

Hash Conversion from Postgres to Rails

我不确定我从 postgres 数据库返回的是什么类型的编码哈希,当查询时显示不同的代码。

问题是...

如何转换此散列(因为它是从 Rails 返回的):

\x158\x06\xDB\xCD\x13M\xDE\xE6\x9A\x8CR\x04\xE3\x8A\xC8\x04H\xF6#B\xF8\xC2<\xFEK~\xDF

进入这个(如它在 postgres 数据库中显示的那样):

\x153806dbcd134ddee69a8c5204e38ac80448f62342f8c23cfe4b7edf

第一个散列(如您所说,来自 Rails)是一个字节数组,其中任何 printable 字符都保留原样,而不是转换为十六进制:\x158 实际上是两个字符:'\x15''\x38' ('8').

在 Postgres table 中,字节数组是相同的,但格式是 hexlify 整个东西。

所以:

\x158\x06\xDB\xCD\x13M... is really \x15,8,\x06,\xDB,\xCD,\x13,M
-- becomes
\x153806dbcd134d... ('8':\x38, 'M':\x4d)