登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

十进制和十六进制之间的转换函数总结  

2009-06-23 20:10:01|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 十进制和十六进制之间的转换函数总结收藏

 一)oracle 自带的十进制和十六进制之间的转换函数
1、十进制到十六进制:
SQL> select   to_char(933947329,'XXXXXXXXXXXX')   from   dual;

TO_CHAR(933947329,'XXXXXXXXXXX')
------------------------------
     37AAE7C1

2、十六进制到十进制:
SQL> select   to_number('37AAE7C1','XXXXXXXXXXXX')   from   dual;

TO_NUMBER('37AAE7C1','XXXXXXXX')
------------------------------
                     933947329


二)下面是构造的函数,非oracle自带函数
 --十进制转十六进制
 create   or   replace   function   DecToHex(iDecimal   IN   VARCHAR2)
  return   varchar2   is
      nDecimal   INTEGER;
      Quotient   INTEGER;
      Residue   INTEGER;
      Result   varchar2(50);
  BEGIN
      nDecimal   :=   to_number(iDecimal);
  LOOP
      Quotient   :=   FLOOR(nDecimal/16);
      Residue   :=   nDecimal   MOD   16;
      SELECT   Decode(Residue,10,'A',11,'B',12,'C',13,'D',14,'E',15,'F',TO_CHAR(Residue))   ||   Result
              INTO   Result   FROM   DUAL;
      EXIT   WHEN   Quotient   =   0;
      nDecimal   :=   Quotient;
  END   LOOP;
            return(Result);
  end   DecToHex;
  /

  --十六进制转十进制
  create   or   replace   function   HexToDec(icHex   in   varchar2)
  return   varchar2   is
      iDecimal   INTEGER;
      cNewHex   VARCHAR2(1);
      iHexlen   INTEGER;
      Result   INTEGER;
  BEGIN
      Result   :=0;
      iHexlen   :=   length(icHex);
      FOR   i   IN   1..iHexlen   LOOP
            cNewHex   :=substr(icHex,iHexlen   -   i   +   1,1);
            SELECT   decode(cNewHex,'A',10,'B',11,'C',12,'D',13,'E',14,'F',15,TO_NUMBER(cNewHex))
                        INTO   iDecimal   FROM   DUAL;
            Result   :=   Result   +   iDecimal   *   power(16,(i-1));
      END   LOOP;
      return(to_char(Result));
  end   HexToDec;


  评论这张
 
阅读(656)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018