这是什么类型的int存储?

时间:2013-09-03 05:39:35

标签: encoding integer firebird

我们有一个Firebird数据库用于(非常糟糕的)应用程序和应用程序的前端,但两者之间没有任何内容(即没有源代码)。

数据库中有一个字段存储为-2086008209,但在前端表示为63997

示例:

Database    Front-End
 758038959  44093
1532056691  61409
  28401112  65866
-712038758  40712
 936488434  43872
-688079579  48567
1796491935  39437
1178382500  30006
1419373703  66069
1996421588  48454
 890825339  46313
-820234748  45206

这是什么类型的存储?我们这里的目标是访问应用程序的后端数据并完全绕过前端GUI,因此我需要知道如何解码此字段以便从中获取适当的值。它存储为FireBird中的int(我不知道FireBird是否有签名/无符号整数,但是当我们选择它时会显示为已签名)。


这是该字段的定义:

enter image description here

据我所知,并非正常化。生成器GEN_CONTACTS_ID对其有66241,一目了然看起来很准确。

3 个答案:

答案 0 :(得分:1)

我的印象是问题出在前端。如果数据库中存储的内容为-2086008209,则存储在数据库中的内容为-2086008209。要更好地了解应用程序如何操作数据,请尝试在数据库中存储其他数字,并查看它们的显示方式。

答案 1 :(得分:1)

我正在处理一个以整数形式存储位图的应用程序(只是不要问),如果你以那种形式表达它们,你会发现有用的东西还是一致的

答案 2 :(得分:0)

您是通过记录SQL来实现这一目标的吗?如果你没有,你可以通过使用Firebird Trace API来获得该SQL:http://www.firebirdfaq.org/faq95/。解析Trace API的一个更简单的工具是此商业产品:http://www.upscene.com/products.fbtm.index.php

我已经使用这些工具和其他技术(触发器等)来查找应用程序在数据库中使用/更改的内容。

当然,如果SQL语句是select * from table,那么这些工具就无济于事。