
如果想知道是不是采用了这种规则,可以查看数据库属性--排序
如果结果是以_bin结尾的是二进制。
也可以执行语句来得到结果。
SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'))
--十进制转其他进制函数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
说步骤太抽象,给你举个例子吧比如:1282
10进制转换2进制
1282÷2=641……0
641÷2=320……1
320÷2=160……0
160÷2=80……0
80÷2=40……0
40÷2=20……0
20÷2=10……0
10÷2=5……0
5÷2=2……1
2÷2=1……0
1÷2=0……1
将余数反过来排列便可。
1282的二进制数值为10100000010
转换16进制
二进制每4位代表一个16进制,从低到高:
0010 2
0000 0
0101 5
所以对应16进制是 502
另一种方法是:
1282÷16=80……2
80÷16=5……0
5÷16=0……5
将余数反过来排列即可,就是502
所以1282的十六进制是502
对于任何十进制的数字,按照上面的方法举一反三,相信你已经没有什么困难了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)