将little endian二进制转换为double

时间:2017-04-23 13:20:12

标签: mysql select binary double type-conversion

我试图简单地证明我的数据是如何存储在MySQL / MariaDB中的。本质上它是一个小端的二进制字符串,表示我在我的软件中记录的数值。

但是我很难使用SELECT情况,我在select中执行转换以返回正确的结果。它通常使用我目前使用CAST和CONVERT尝试的方法给出了大量数据。

到目前为止我所拥有的是:

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

这正确地返回二进制HEX表示,例如:

000000000000F03F

这应该以小端格式对应于1。我希望能够在MySQL中完全实现这一点,因为我打算在存储过程中使用它。

2 个答案:

答案 0 :(得分:0)

没关系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

答案 1 :(得分:0)

这可能是最简单的解决方案:

@foreach($pcategories as $category)
<div class="dropdown-menu">
  <ul>
    @foreach($category->page as $page)
    <li>
     <a href="#">{{ $page->title }}</a>
    </li>
    @endforeach
  </ul>
</div>
@endforeach
  1. 将十六进制转换为二进制
  2. 反转字符串
  3. 将其转换回十六进制
  4. 再次扭转