2017-01-09 75 views
0

我試圖從BLOB列中提取浮點值寫入單精度32位十六進制。爲了更詳細地說明,我在下面構建了與我正在使用的Mysql-db類似的示例:即,包含值爲'42f00000'的BLOB列的表。目標是具有從中提取值'120'的功能。如何從MySQL中的BLOB列中提取十六進制值

示例數據集將是:

CREATE TABLE MyTable (FirstColumn BLOB); 

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

SELECT * 
FROM MyTable; 

的輸出,後者「SELECT *」將是這樣的: enter image description here

我寫一個函數的挑戰,可以爲整個做到這一點柱。我試了一下我的互聯網上,但沒有成功找到:即

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

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

希望任何人有類似的經驗?

回答

0

我能夠做第一步;即從BLOB中提取HEX值。

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

此代碼返回「0x42F00000」作爲字符串

下一步將是現在解碼此HEX值(它是一個字符串)以通過單精度轉換(未ASCI)的浮子。類似於這種類型的轉換:https://www.h-schmidt.net/FloatConverter/IEEE754.html

任何想法?

相關問題