1000

C语言开发中,sqlite 中的溢出整数如何能准确读取出来?

在sqlite中,有一个字段存储的是64位无符号整数。

小于 2^63-1 的数据都没问题,但是我们有大量超过此值的数据,比如 9223379502689557271,存到数据库里就变成了 -3.68861248304756E-311。

9223379502689557271 是 0x800006ca466e1b17,-3.68861248304756E-311 是一个精度不足(有效数字不足)的 0x800006ca466e1b17,我用数据库软件打开了这个数据库后,发现该浮点数的 hex 值依然是正确的,如图:(软件的十六进制展示是从右往左的)

图片说明

我尝试着用 sqlite3_column_blob sqlite3_column_int sqlite3_column_text 等方法去读取这个值,但是得到的数据都是 -3.68861248304756E-311,而且,这个值因为精度不足,无法还原成 9223379502689557271,我想请问大神们,既然数据库存储的原始数据是准确的,那么我该如何书写代码,才能将 9223379502689557271 或者 0x800006ca466e1b17 准确的读取出来呢?

查看全部
FastLight
FastLight
2019/08/16 03:04
  • sqlite
  • c语言
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

4个回复