3

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

HEXTORAW(1234) = x'1234'

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

(这是为了在没有 HEXTORAW 函数的 RDBMS 中创建这个函数。)

4

2 回答 2

2

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

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

于 2014-08-28T19:25:17.610 回答
2

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

给定一个字符串作为输入参数

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

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 的回答之上,所以我想赞扬他,但我也想发布一个完整的程序。)

于 2014-08-29T17:05:20.560 回答