如何把数字dump出来的code还原成十进制

[复制链接]
查看11 | 回复5 | 2010-10-8 09:28:51 | 显示全部楼层 |阅读模式
SQL> select dump(2000,16) from dual;
DUMP(2000,16)
------------------
Typ=2 Len=2: c2,15
我如何把c2,15 还原成 十进制呢?
回复

使用道具 举报

千问 | 2010-10-8 09:28:51 | 显示全部楼层
dump显示的是2000的存储格式吧,如果要做逆向计算的话,需要熟悉NUMBER类型数据的存储格式
Typ=2 即number类型
Len=2表示存储长度
c2表示最高位为百位
由于0x1表示0,所以0x2表示1,所以:
SQL> select to_char(20+1,'xx') from dual;
TO_
---
15
理论引2000存储成高位(百位20)+低数(个位00),为了节约存储,00不做存储。
回复

使用道具 举报

千问 | 2010-10-8 09:28:51 | 显示全部楼层
ORACLE 有没有提供什么工具能够直接转换回去呢?难道 每次我要转换的话就要再反推一遍
回复

使用道具 举报

千问 | 2010-10-8 09:28:51 | 显示全部楼层
declare n number;
begin
dbms_stats.convert_raw_value('c215',n);
dbms_output.put_line(n);
end;
回复

使用道具 举报

千问 | 2010-10-8 09:28:51 | 显示全部楼层
赞一个,竟然找到了简易算法...
回复

使用道具 举报

千问 | 2010-10-8 09:28:51 | 显示全部楼层
都是牛人啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行