问答题简答题将下列二进制数转换为十六进制数和十进制数1111。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ORACLE使用函数对二进制、十进制、十六进制数互相转换
1.将十进制的数转换为十六进制的数请使用to_char函数。
中16进制的表达是按照字符串来描述的,所以将十进制的数转换为十六进制的数使用to_char函数
2.将十六进制的数转换为十进制的数请使用to_number函数。
如下,16进制A是10.2A是2*16+A=42.注意xxx,如果转换的数比较大,要多写几个,避免位数不足而报错。
ORACLE未提供二进制与十进制互转的函数,可以自己创建。以下十进制与二进制转换脚本引自惜纷飞博客,感谢!
3.十进制转换二进制--使用自定义函数
4.二进制转换十进制--使用自定义函数
5.关于创建公有同义词解决其它用户引用当前用户的定义函数的问题:
当前BYS用户为DBA用户,其它用户默认无法使用当前用户的自定义函数。
可以将自定义函数的执行权限授予PUBLIC用户,并创建公有同义词。这样其它用户就可以通过引用公有同义词来使用新建的自定义函数了。
创建公有同义词--先不将函数执行权限授予PUBLIC,此时从其它用户使用函数报错。
将函数执行权限授予PUBLIC,此时从其它用户可以正常使用函数。
对于bit_to_number函数,先将函数执行权限授予PUBLIC,但是并未创建同义词。此时使用其它用户执行函数报错
此时对函数创建公有同义词,使用其它用户可以正常执行函数。
6.二进制与十六进制的转换
因为没有直接的函数,但是结合以上的十进制转二进制与十进制转十六进制函数,可以通过函数嵌套来实现二进制与十六进制的转换。
即先使用二进制与十进制的转换,再将转换成的十进制做为参数转换为十六进制。
下面语句得出16进制数11,换算成十进制是17,转换正确完成。
7.十六进制与二进制的转换
下面语句可以将16进制转成二进制,与上面语句对比,转换结果正确。
功能: 将由string表示的二进制数值转换为一个RAW数值. String应该包含一个十六进制的数值. String中的每两个字符表示了结果RAW中的一个字节..HEXTORAW和RAWTOHEX为相反的两个函数.
使用位置: 过程性语言和SQL语句。
功能: 将RAW类数值rawvalue转换为一个相应的十六进制表示的字符串. rawvalue中的每个字节都被转换为一个双字节的字符串. RAWTOHEX和HEXTORAW是两个相反的函数.
使用位置: 过程性语言和SQL语句。
功能: 将RAW类型值rawvalue转换为一个十六进制表示的字符串。rawvalue中的每个字节转换为一个双字符的字符串。RAWTONHEX返回值是NVARCHAR2类型而不是VARCHAR2类型。
使用位置: 过程性语言和SQL语句。