HEXTORAW是几个RDBMS中的函数,如Oracle和DB2 on LUW。它需要一个字符或整数输入,并基本上将其转换为HEX值。
HEXTORAW(1234) = x'1234'
此类型转换的算法是什么?幕后代码中发生了什么?
(这是因为想要在没有HEXTORAW功能的RDBMS中创建这个功能。)
答案 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的回答,所以我想对他表示赞赏,但我也想发布一个完整的程序。)