在查询中SQLite Int到Hex和Hex到Int

Dan*_*Dan 4 c++ sqlite visual-c++

我有一些以INTEGER表格形式提供给我的数字数据.我将它与其他数据一起插入到SQLite中但是当我把它写出来时,INTEGERNumbers需要是Hex带有前导零的8位数字.

防爆.

输入

400 
800 
25 
76
Run Code Online (Sandbox Code Playgroud)

产量

00000190 
00000320 
00000019 
0000004C
Run Code Online (Sandbox Code Playgroud)

最初我在阅读它们时将它们转换为存储它们并TEXT像这样存储它们.

stringstream temp;
temp << right << setw(8) << setfill('0') << hex << uppercase << VALUE;
Run Code Online (Sandbox Code Playgroud)

但生活从来都不容易,现在我不得不以INTEGER形式创造第二个输出HEX.有没有一种方法来转换INTEGER号码HEXHEX号码INTEGERS的SQLite的?

我想避免在SQLite之后使用C++来更改数据,因为我编写了一些修改导出函数来获取查询结果并将它们打印到文件中.如果我在查询返回期间需要触摸数据,则无法使用它们.

我查看了HEX()SQLite 中的函数,但没有得到预期的结果.我能做一个功能还是效率很低?我在一个非常大的数据集上做这个,所以应该避免任何昂贵的.

注意:我在Visual Studios 2010中使用SQLites C/C++接口.

小智 13

你可以使用sqlite3 printf()函数:

CREATE TABLE T (V integer);
insert into T(V) values(400), (800), (25), (76);
select printf('%08X', V) from T;
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 1

好吧,这不是我最喜欢的答案,我决定在表中添加一列,即 INTEGER 值。

如果有人找到更好的方法来做到这一点,我会洗耳恭听。

编辑:

在实现这个答案并查看它对程序的影响之后,这似乎是一种获取数据而不增加太多运行时负载的非常好的方法。这个答案确实增加了数据库的大小,但不需要任何额外的处理来从 SQLite 获取值,因为这只是获取查询中的不同列。

另外,因为我从这些值开始,所以通过将它们添加到表中,而不是稍后处理以获得我在程序早期通过的值,这个答案可以节省巨大的成本。