我创建一个表并通过在ARM Linux机器上执行以下命令来填充它
~ # sqlite3 /mnt/mmc/test.db
SQLite version 3.6.12
sqlite> create table a (d);
sqlite> insert into a values (1.5);
sqlite> select * from a;
1.5
然后,我将文件传输到Mac并执行以下命令
themac:~ me$sqlite3 test.db
SQLite version 3.6.12
sqlite> select * from a;
5.30239915051991e-315
哇我以为数据文件是平台无关的.
解决方法:
我对SQLite没有特别的了解,但这表明存在一个问题,其中交换了64位IEEE 754格式的double的两个32位字,如您在本示例中所看到的(在x86上使用gcc运行)机):
$cat test.c
#include <stdio.h>
int main(void)
{
union {
double d;
unsigned long long ull;
} u;
u.d = 1.5;
printf("%016llxn", u.ull);
u.d = 5.30239915051991e-315;
printf("%016llxn", u.ull);
return 0;
}
$gcc -Wall -o test test.c $./test 3ff8000000000000 000000003ff80000 $
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!