关于utl_raw.cast_to_number

seven7nine 2008-11-11 02:34:47
SELECT utl_raw.cast_from_number(100) FROM dual;
-------------
结果为:C202

另:
utl_raw.cast_from_number(n IN NUMBER) RETURN RAW;

小弟不了解结果是怎么转化得来的,希望各位帮帮忙。
先谢过了!
...全文
530 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
taomct 2009-10-06
  • 打赏
  • 举报
回复
select utl_raw.cast_to_number( 'C202182E' )
, utl_raw.cast_from_number(123.45)
from dual

Row# UTL_RAW.CAST_TO_NUMBER('C202182E') UTL_RAW.CAST_FROM_NUMBER(123.45)
1 123.45 C202182E
butchroller 2008-11-11
  • 打赏
  • 举报
回复 1
  正数的解读数字为正数,第一个字节必须大于128(0×80)
  第一步:指数=第一个字节-193
  第二步:每一个其他的数字都减1
  第三步:从基于100的指数转换到基于10的指数每一个结果通过100^(EXP-N)其中EXP是第一步中得到的指数N是数字的位置的顺序号(最高位的N=0)
  第四步:将所有的值相加
  负数的解读数字为负数,第一个字节必须小于128(0×80)
  第一步:指数=62-first bytes
  第二步:每一个数字被101减
  第三步:将基数从100转换为10每一个数字乘以100^(EXP-N)这里EXP是第一步中的指数值N是数字位置顺序值(最高位为0)
  第四步:确认尾巴上的102已经抛弃
第五步:将所有的值相加如果数字标示超过21字节,则最后的102不被要求,oracle不会使用22字节来标示的。oracle将自己会考虑所有的字节。
-------------------------------------------------
100 = (0x02 - 1) * 100 ^ (0xC2 - 193 - 0)


17,103

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧