【问题标题】:Converting Hex to Float SQL将十六进制转换为浮点 SQL
【发布时间】:2016-05-30 10:52:30
【问题描述】:

我正在尝试在 SQL Server 中找到将HEX 转换为float 的方法。

一个示例值是0x42c80000,它对应于100.00

使用CONVERT 很容易将此Hex 值转换为Int,但我找不到等效的浮点转换。

【问题讨论】:

    标签: sql sql-server floating-point hex


    【解决方案1】:
    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

    还有,有趣的博客https://blogs.msdn.microsoft.com/psssql/2010/11/01/how-it-works-sql-parsing-of-numbers-numeric-and-float-conversions/

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2016-06-02
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2016-06-01
      相关资源
      最近更新 更多