我从一个文件中读取了4个字节的二进制字符串。 4字节二进制字符串是大端,表示32位整数。但我的机器是小端(英特尔)。所以我需要将大端的4字节二进制字符串转换为32位小端整数。
mysql中是否有任何本机函数可以处理这个?一个例子将受到高度赞赏。
感谢。
更新 OS依赖函数或c / c ++标准库在mysql项目中受到高度限制,在这种情况下很难使用。
答案 0 :(得分:1)
对于C,您可以使用ntohl()
将32位(即4字节)整数转换为主机字节顺序。
其原型应位于<arpa/inet.h>
。
<强>更新强>
ntoh/hton
系列函数由POSIX标准定义。
它将网络字节顺序转换为主机字节顺序和verse签证。
网络字节顺序定义为Big Endian。
答案 1 :(得分:0)
您可以将N
列中从偏移量s
开始的32位Little Endian原始整数数据转换为十进制:
conv(hex(reverse(substr(s, N + 1, 4))), 16, 10)
我发现此页面正在寻找一种更有效的方法,而无需编写UDF。使用UDF既简单又非常高效-您无需任何库调用即可手工完成,但是您必须了解C,并且必须具有足够的服务器访问权限才能安装UDF,在诸如Amazon RDS或Aurora之类的产品上是不可能的。