Bar*_*t V 1 mysql hex blob extract
我正在尝试从以单精度 32 位十六进制编写的BLOB 列中提取浮点值。为了更详细地说明,我在下面构建了类似于我正在使用的 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;
Run Code Online (Sandbox Code Playgroud)
我很难编写一个可以为整个列执行此操作的函数。我尝试了我在互联网上找到的但没有成功:即,
SELECT UNHEX(FirstColumn)
FROM MyTable;
## NULL-result
SELECT CONV(FirstColumn, 10,16)
FROM MyTable;
## 0 as result
Run Code Online (Sandbox Code Playgroud)
希望有人有类似的经历吗?
我能够做到第一步;即从 BLOB 中提取十六进制值。
SELECT CONCAT("0x",HEX(CAST(FirstColumn AS CHAR(10000) CHARACTER SET utf8)))
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
此代码以字符串形式返回“0x42F00000”
下一步是通过单精度转换(不是 ASCI)将这个 HEX 值(它是一个字符串)解码为浮点数。类似于这种类型的转换:https : //www.h-schmidt.net/FloatConverter/IEEE754.html
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
8314 次 |
| 最近记录: |