select
'1000000011011110101111100001101101100000011100110011001100111111'::bit(64)
as x;
我需要转换为其他表示形式,如十六进制,base64或在函数中使用它进行base36或base58转换......所以需要转换为bytea
。但是没有x::bytea
,最简单的方法是什么?
答案 0 :(得分:1)
with data(val) as (
values (
'1000000011011110101111100001101101100000011100110011001100111111'::bit(64))
)
select decode(to_hex(val::bigint), 'hex')
from data;
decode
--------------------
\x80debe1b6073333f
(1 row)
该函数返回bytea
,您可以将其编码为base64
:
select encode(decode(to_hex(val::bigint), 'hex'), 'base64')
from data;
encode
--------------
gN6+G2BzMz8=
(1 row)
注意:对于更大的tham bigint
二进制文件,您需要使用GMP external extension和mpz
数据类型...并检查是否转换为{{ 1}}工作正常,或使用GMP直接转换。