这个问题首先要搞清楚16进制浮点数的表示方法,根据IEEE的标准,分为32位和64位两种,参数分别如下:
符号位 |
指数位 |
尾数位 |
指数偏移量 |
|
32位 |
1[31] |
8[23-30] |
23[0-22] |
127 |
64位 |
1[63] |
11[52-62] |
52[0-51] |
1023 |
其次,要先准备几个函数,如16进制转成2进制的函数等。这里一起列出
/* 16进制数转化为2进制数的函数 */
CREATE function Hex2Bin(
@h varchar(50)
)
returns varchar(200)
as
/* 16进制数转化为2进制数的函数 */
/* 版本: 1.0 */
/* 作者: Haiwer */
/* 版权所有 */
begin
-- 去掉多余的 0X
if left(@h,2)='0X'
set @h=right(@h,len(@h)-2)
CREATE function Hex2Bin(
@h varchar(50)
)
returns varchar(200)
as
/* 16进制数转化为2进制数的函数 */
/* 版本: 1.0 */
/* 作者: Haiwer */
/* 版权所有 */
begin
-- 去掉多余的 0X
if left(@h,2)='0X'
set @h=right(@h,len(@h)-2)
declare @r varchar(100)
set @r=''
declare @i int
set &#
set @r=''
declare @i int
set &#