HEXTORAW()函数如何工作?算法是什么?

时间:2014-08-28 18:20:51

标签: sql oracle algorithm rdbms db2-luw

HEXTORAW是几个RDBMS中的函数,如OracleDB2 on LUW。它需要一个字符或整数输入,并基本上将其转换为HEX值。

HEXTORAW(1234) = x'1234'

此类型转换的算法是什么?幕后代码中发生了什么?

(这是因为想要在没有HEXTORAW功能的RDBMS中创建这个功能。)

2 个答案:

答案 0 :(得分:2)

从此页面: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i46018

  

当Oracle自动转换RAW或LONG RAW数据时   CHAR数据,二进制数据以十六进制形式表示   一个十六进制字符,表示每四位RAW数据。   例如,显示具有位11001011的RAW数据的一个字节   作为CB输入。

答案 1 :(得分:2)

为了在这里有一个完整的算法:

将字符串作为输入参数

1.验证字符串仅包含数字1-9或字母A-F。

2.通过迭代每个字符来计算二进制值, 并连接相应的二进制值:

 binary    hexadecimal
 0000      0
 0001      1
 0010      2
 0011      3
 0100      4
 0101      5
 0110      6
 0111      7
 1000      8
 1001      9
 1010      a  
 1011      b
 1100      c  
 1101      d  
 1110      e  
 1111      f  

例如, 1234 将是:

0001 0010 0011 0100

3.使用该值,设置内存位置的位。

4.将其作为原始数据类型

5.将其作为函数返回值

返回

生成的原始数据类型将具有与原始字符串等效的十六进制表示形式。

鉴于输入' 1234'该函数将返回原始数据类型,该数据类型将显示为十六进制值x' 1234'。二进制数据通常以HEX表示,以便于阅读和引用。

(这是基于Mark J. Bobak的回答,所以我想对他表示赞赏,但我也想发布一个完整的程序。)