ORACLE 36进制和10进制,互相转换函数

第一部分

--36转10进制

create or replace function f_36to10 (str varchar) return int  is

returnValue int;
  str36     varchar(36);
  subWork   varchar(1);
  workIndex   int;
  len     int;
  i       int;

begin

returnValue:= 0;
  str36 := ‘123456789ABCDEFGHIJKLMNOPQRSTUVWSYZ‘;
  i := 1;
  len := length(trim(str));
  
  while i <= len loop
    subWork := SUBSTR(str, i, 1);
    workIndex := instr( str36,subWork,1,1);
    returnValue := returnValue + (workIndex * power(36, len-i));
    i := i + 1;
  end loop;

return  returnValue;
  
end f_36to10;

第二部分

--10转36进制

create or replace function f_10to36(i intreturn varchar is

ret varchar2(8);
  var_m int;
  var_s int;
  
begin

ret := ‘‘;
  var_s := i;
  while var_s >= 36 loop
    var_m := mod(var_s, 36);
    if var_m < 10 then
     ret := to_char(var_m) || ret;
    else
    ret := chr(var_m - 10 + 97) || ret;
      end if;
    var_s := trunc(var_s / 36);
  end loop;
  if var_s > 0 or (var_s = 0 and ret = ‘‘) then
    if var_s < 10 then
     ret := to_char(var_s) || ret;
    else
     ret := chr(var_s - 10 + 97) || ret;
    end if;
  end if;
  
  return UPPER(ret);--lpad(ret, 8, ‘0‘);
  
end f_10to36;

另外一个方法,链接:http://www.cnblogs.com/jak-black/archive/2010/09/25/1834617.html

时间: 2024-10-29 19:05:34

ORACLE 36进制和10进制,互相转换函数的相关文章

PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]

自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到. 可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有点要注意下,2.8.16进制转换时,使用的是系统的自己的函数. 所以,不管怎么高精度转换值可能大于2147483646. 另外, 32进制低精转换,最大值:2147483646: 32进制高精转换,最大值:77309411327: 64进制高精转换,最大值:133143986175. jinzhi.ph

2进制,10进制,16进制,补码和移位

逢二进一,逢十进一,十六进制 10110101(2) = 128+32+16+4+1 = 181(10) b 5(16) = b*16+5 = 11*16+5 = 181(10) 2进制 int n = 45; System.out.println(Integer.toBinaryString(n)); 计算机的内部(Java)只有2进制数据, 在显示的时候编程语言提供API将2进制转换为10进制显示出来. 计算机只能处理2进制数据, 利用编程语言提供的算法支持了10进制 Java中用于支持2进

2进制,8进制,16进制转10进制的自定义函数

1.2进制转10进制自定义函数: function DecToInt(temp:string):integer; //2进制转10进制var  i,j  : Integer;begin  result := 0;  j   := Length(temp);  //取得字符串长度:  for I := 0 to Length(temp)-1 do  begin    result := result+strtoint(Copy(temp,j,1))*Trunc(power(2,I));  //Tr

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

16进制与10进制

16进制 0 1 2 3 4 5 6 7 8 9 a b c d e f. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 1 2(16进制中的10 进制表象,进位后,前边一位)10进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20我们的计算机中一般都以16进制保存.我们用的时间就是这种60进制中的10进制表象.

第一个python小程序,2进制转10进制

#Bin to Dec #my first python programe n = c = itm = 0 a = raw_input('please input Binary number:\n') for n in range(0,len(a)):    b = a[n:n+1] #   print 'n is', n #   print 'b is',b #   print 'len',len(a[n:])       if b == '1':    c = 2**(len(a[n:])-

10进制转16进制,16进制转10进制,随机出一个6位十六进制颜色值

方案一: var num16 = "ffffff";var num10 = parseInt(num16,16);//16进制转10进制console.log(num10) // 16777215 var colorNum = Math.round(Math.random()*num10).toString(16);colorNum = ("000000"+colorNum).slice(-6)console.log("#"+colorNum)

Delphi XE2 16进制转10进制《LceMeaning》

以下在编写IC卡项目时出现卡号转换错误时的解决方法,在XE2下测试正常.================================================ uses math; function HexToDec(Hex : string) : string; var i : integer; res : real; len : integer; begin len := length(Trim(Hex)); for i := 1 to len do begin case Hex[

16进制转10进制和2进制

/** * 16进制转10进制 * * @param str * @return */ public static String sixteenToTen(String str) { int ten = Integer.parseInt(str, 16); String result = String.valueOf(ten); return result; } /** * 16进制转2进制 * @param str * @return */ public static String hexSt