首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

透过自定义函数实现进制转换

2012-07-20 
通过自定义函数实现进制转换通过自定义函数实现进制转换    以下函数来自AskTom网站,是Tom给出的例子,供参

通过自定义函数实现进制转换

通过自定义函数实现进制转换
  
  以下函数来自AskTom网站,是Tom给出的例子,供参考:

  create or replace function to_base( p_dec in number, p_base in number )  return varchar2  is  l_str varchar2(255) default NULL;  l_num number default p_dec;  l_hex varchar2(16) default ’0123456789ABCDEF’;  begin  if ( trunc(p_dec) <> p_dec OR p_dec < 0 ) then  raise PROGRAM_ERROR;  end if;  loop  l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;  l_num := trunc( l_num/p_base );  exit when ( l_num = 0 );  end loop;  return l_str;  end to_base;  /?  create or replace function to_dec  ( p_str in varchar2,  p_from_base in number default 16 ) return number  is  l_num number default 0;  l_hex varchar2(16) default ’0123456789ABCDEF’;  begin  for i in 1 .. length(p_str) loop  l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;  end loop;  return l_num;  end to_dec;  /  ?  create or replace function to_hex( p_dec in number ) return varchar2  is  begin  return to_base( p_dec, 16 );  end to_hex;  /?  create or replace function to_bin( p_dec in number ) return varchar2  is  begin  return to_base( p_dec, 2 );  end to_bin;  /?  create or replace function to_oct( p_dec in number ) return varchar2  is  begin  return to_base( p_dec, 8 );  end to_oct;  / 
?

?

热点排行