转换Little Endian二进制到

问题描述:

我试图做一个简单的证据来证明我的数据如何存储在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? –

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