2017-04-23 60 views
0

我試圖做一個簡單的證據來證明我的數據如何存儲在MySQL/MariaDB中。本質上它是一個小端的二進制字符串,代表我在軟件中記錄的數值。轉換Little Endian二進制到

但是,我努力使用一個SELECT案例,我在select中執行轉換以返回正確的結果。它通常給我很大數量的方法,我目前嘗試CAST和CONVERT。

我有迄今是:

SELECT HEX(BINARY(SubString(Data,0,8))) As Data from prop_binary; 

這正確返回二進制HEX表示,例如:

000000000000F03F 

這應該然後對應於1小端格式。我希望完全能夠在MySQL中實現這一點,因爲我打算在存儲過程中使用它。

+0

請解釋動機爲了做到這一點?這也可能(是?)平臺依賴。 –

+0

我有一個MEDIUMBLOB這是一個數字數組的二進制表示。該數組沒有分隔符,並且僅包含8個字節的數據包(因此子字符串)。我試圖證明一個正確的方法來處理存儲過程之前,希望最後返回整個數組作爲數字表(雙打)表。 –

+0

爲什麼在地球上將數組存儲爲MEDIUMBLOB? –

回答

0

Nevermind Ed,我通過在論壇http://www.dbforums.com/showthread.php?1703348-MySQL-convert-hex-to-double中實現Convert_Hex_2_Double函數來修復它。然後我實現了Reverse獲得了正確的值。

最終我以結束:

Select Convert_Hex_2_Double(HEX(Reverse(Binary(Substring(Data,17,8)))) As Data from prop_binary; 

這將返回正確的數據集,並證明我,我可以在MySQL實現這一目標等都可以向前移動到存儲過程。

注:由於這是MariaDB的,而功能可以創建,它需要修改刪除函數名和它們的括號之間的空間,我學會了幾個小時前來自:

http://3.droppdf.com/files/n4agH/learning-mysql-and-mariadb.pdf