HEXTORAW 是几个 RDBMS 中的一个函数,比如Oracle和LUW 上的 DB2。它需要一个字符或整数输入,并且基本上将其转换为 HEX 值。
HEXTORAW(1234) = x'1234'
这种类型转换的算法是什么?幕后代码中发生了什么?
(这是为了在没有 HEXTORAW 函数的 RDBMS 中创建这个函数。)
从这个页面: http ://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i46018
当 Oracle 自动将 RAW 或 LONG RAW 数据与 CHAR 数据进行转换时,二进制数据以十六进制形式表示,每四位 RAW 数据用一个十六进制字符表示。例如,11001011 位的 RAW 数据字节显示并输入为 CB。
为了在这里有一个完整的算法:
给定一个字符串作为输入参数
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 的回答之上,所以我想赞扬他,但我也想发布一个完整的程序。)