【问题标题】:How to extract Hexadecimal values from BLOB-column in MySQL如何从 MySQL 中的 BLOB 列中提取十六进制值
【发布时间】:2017-01-09 21:33:10
【问题描述】:

我正在尝试从 BLOB 列 中提取浮点值,该列用 单精度 32 位十六进制编写。为了更详细地说明,我在下面构建了类似于我正在使用的 Mysql-db 的示例:即,具有包含值 '42f00000' 的 BLOB 列的表。目标是拥有一个从中提取值“120”的函数。

示例数据集是:

CREATE TABLE MyTable (FirstColumn BLOB);

INSERT INTO MyTable (FirstColumn) VALUES (0x42f00000); #Representing value 120 in single-precision 32bit Hex

SELECT *
FROM MyTable;

后一个 'SELECT *' 的输出是这样的:

我对编写一个可以为整个专栏执行此操作的函数提出了挑战。我尝试了在互联网上找到的但没有成功:即,

SELECT UNHEX(FirstColumn)
FROM MyTable;
## NULL-result

SELECT CONV(FirstColumn, 10,16)
FROM MyTable;
## 0 as result

希望有人有类似的经历吗?

【问题讨论】:

    标签: mysql hex blob extract


    【解决方案1】:

    我能够完成第一步;即从 BLOB 中提取 HEX 值。

    SELECT CONCAT("0x",HEX(CAST(FirstColumn AS CHAR(10000) CHARACTER SET utf8)))
    FROM MyTable;
    

    此代码将“0x42F00000”作为字符串返回

    下一步是通过单精度转换(不是 ASCI)将这个 HEX 值(它是一个字符串)现在解码为浮点数。类似这种类型的转化:https://www.h-schmidt.net/FloatConverter/IEEE754.html

    有什么想法吗?

    【讨论】:

      猜你喜欢
      • 2014-02-18
      • 2015-05-22
      • 1970-01-01
      • 2016-07-29
      • 2011-07-12
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多