PostgreSQL的10进制与16进制互转

本文深入探讨了PostgreSQL数据库中将十进制数转换为十六进制数及反之的操作,通过具体示例展示了如何使用内置函数to_hex()与自定义函数hex_to_dec()进行数值转换,并解释了其在实际开发中的应用价值。
1.10进制转16进制
Postgres里面有一个内置的10进制转16进制的函数:to_hex(int)/to_hex(bigint)
[postgres@localhost ~]$ psql
Password: 
psql (9.1.3)
Type "help" for help.

postgres=# select to_hex(9);
 to_hex 
--------
 9
(1 row)

postgres=# select to_hex(17);
 to_hex 
--------
 11
(1 row)

postgres=# select to_hex(31);
 to_hex 
--------
 1f
(1 row)

postgres=# select to_hex(255);
 to_hex 
--------
 ff
(1 row)

postgres=# select to_hex(256);
 to_hex 
--------
 100
(1 row)
2.16进制转10进制
没有内置的,参考网上的一个例子
postgres=# CREATE FUNCTION
hex_to_dec(in_hex TEXT)
RETURNS INT
IMMUTABLE STRICT LANGUAGE sql AS
$body$
  SELECT CAST(CAST(('x' || CAST($1 AS text)) AS bit(8)) AS INT);
$body$;
CREATE FUNCTION
postgres=# select hex_to_dec('1f');
 hex_to_dec 
------------
         31
(1 row)

postgres=# select hex_to_dec('ff');
 hex_to_dec 
------------
        255
(1 row)

postgres=# select hex_to_dec('fe');
 hex_to_dec 
------------
        254
(1 row)

postgres=# select hex_to_dec('09');
 hex_to_dec 
------------
          9
(1 row)

postgres=# select hex_to_dec('11');
 hex_to_dec 
------------
         17
(1 row)

内置的函数说明,支持输入是int或者bigint类型
to_hex(int/bigint):
CREATE OR REPLACE FUNCTION to_hex(integer)
  RETURNS text AS
'to_hex32'
  LANGUAGE internal IMMUTABLE STRICT
  COST 1;
ALTER FUNCTION to_hex(integer)
  OWNER TO postgres;
COMMENT ON FUNCTION to_hex(integer) IS 'convert int4 number to hex';

CREATE OR REPLACE FUNCTION to_hex(bigint)
  RETURNS text AS
'to_hex64'
  LANGUAGE internal IMMUTABLE STRICT
  COST 1;
ALTER FUNCTION to_hex(bigint)
  OWNER TO postgres;
COMMENT ON FUNCTION to_hex(bigint) IS 'convert int8 number to hex';

参考:http://postgresql.1045698.n5.nabble.com/Hex-to-Dec-Conversion-td3218223.html

转载于:https://my.oschina.net/Kenyon/blog/128435

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值