首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MySQL中的BLOB列中提取十六进制值

如何从MySQL中的BLOB列中提取十六进制值
EN

Stack Overflow用户
提问于 2017-01-09 21:33:10
回答 1查看 11.3K关注 0票数 2

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

示例数据集将是:

代码语言:javascript
复制
CREATE TABLE MyTable (FirstColumn BLOB);

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

SELECT *
FROM MyTable;

后者的输出“SELECT*”如下:

我很难编写一个可以在整个专栏中实现这个功能的函数。我尝试了我在互联网上发现的东西,但没有成功。

代码语言:javascript
复制
SELECT UNHEX(FirstColumn)
FROM MyTable;
## NULL-result

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

希望有人有类似的经历?

EN

回答 1

Stack Overflow用户

发布于 2017-01-11 12:31:04

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

代码语言:javascript
复制
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

有什么想法吗?

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41557344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档