You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PostgreSQL中bit(64)类型转换为bytea类型?

最简单的PostgreSQL bit(64)转bytea方法

如果你使用的是PostgreSQL 14及以上版本,内置的bit_to_bytea函数就是最直接的解决方案,一步到位:

SELECT bit_to_bytea(x) AS x_bytea
FROM (
  SELECT '1000000011011110101111100001101101100000011100110011001100111111'::bit(64) AS x
) t;

这个函数专门用于将bit类型转换为bytea,完美适配你的需求,转换后直接就能用于后续的十六进制、Base64编码,或者Base36/Base58的转换函数。


如果你的PostgreSQL版本低于14,没有bit_to_bytea函数,可以用numeric中转的方式实现,同样简单可靠:

SELECT decode(to_hex(x::numeric), 'hex') AS x_bytea
FROM (
  SELECT '1000000011011110101111100001101101100000011100110011001100111111'::bit(64) AS x
) t;

为什么不直接用x::bigint::bytea?

因为bit(64)的最高位如果是1(像你例子里的情况),转成bigint会被当作符号位,得到负数,进而导致bytea的结果不符合预期。用numeric中转可以避免这个问题,它能正确处理无符号的64位数值。


转换完成后,你就可以用encode(x_bytea, 'hex')得到十六进制字符串,encode(x_bytea, 'base64')得到Base64编码,或者把bytea传入你需要的Base36/Base58转换函数中。

内容的提问来源于stack exchange,提问作者Peter Krauss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:42