我正在尝试找到一种在SQL Server中将HEX
转换为float
的方法。
示例值为0x42c80000
,对应100.00
。
使用Hex
很容易将此Int
值转换为CONVERT
但我无法找到等效的浮动转换。
答案 0 :(得分:4)
DECLARE @BinaryFloat AS VARBINARY(4);
SET @BinaryFloat = CONVERT(VARBINARY, '0x42c80000',1);
SELECT SIGN(CAST(@BinaryFloat AS INT))
* (1.0 + (CAST(@BinaryFloat AS INT) & 0x007FFFFF) * POWER(CAST(2 AS REAL), -23))
* POWER(CAST(2 AS REAL), (CAST(@BinaryFloat AS INT) & 0x7f800000) / 0x00800000 - 127)
希望我可以申请信用,但唉:http://multikoder.blogspot.com.au/2013/03/converting-varbinary-to-float-in-t-sql.html