Encoding 这是什么类型的int存储?

Encoding 这是什么类型的int存储?,encoding,integer,firebird,Encoding,Integer,Firebird,我们有一个Firebird数据库,用于(非常糟糕的)应用程序和应用程序的前端,但中间没有任何内容(即没有源代码) 数据库中有一个字段存储为-2086008209,但前端表示为63997 示例: Database Front-End 758038959 44093 1532056691 61409 28401112 65866 -712038758 40712 936488434 43872 -688079579 48567 1796491935 39437 11783

我们有一个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 数据库前端 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,因此我需要知道如何解码该字段,以便从中获得适当的值。它以
int
的形式存储在FireBird中(我不知道FireBird是否有已签名/未签名的int,但当我们选择它时,它显示为已签名)


这是该字段的定义:


据我所知,这并不是非正常化。发电机
GEN\u CONTACTS\u ID
上有
66241
,乍一看,这看起来很准确。

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

我正在使用一个以整数形式存储位图的应用程序(只是不问),如果您以这种形式表达它们,您是否有一些有用的或一致的东西

您是通过记录SQL来实现这一点的吗?如果没有,您可以通过使用Firebird跟踪API来获取SQL:,从而更好地为自己服务。解析跟踪API的一个更简单的工具是此商业产品:

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


当然,如果SQL语句是select*from table,那么这些工具将不会有多大帮助。

当然,但我需要找出从数据库中的内容到前端内容的过程。不幸的是,我不能在字段中输入任意数据(甚至不要问为什么)。这里有成千上万条记录——我只是随机选择了这条记录,希望有人能认识到这个混蛋到底做了什么。@MarkHenderson我做了一些快速测试,没有发现任何关系。不过,更多的案例肯定会有所帮助。如果不能输入新的值,则无论已经存在什么值,都会显示在数据库中。比如说10?我已经更新了很多例子。我已经尝试了我能想到的一切——转换成二进制,然后从二进制转换成ascii/ansi/unicode表示(甚至不接近),还有其他一些事情。这样其他人就不会再尝试了:我已经玩过MOD和DIV,还有2次多项式。不走运。你有更多的例子吗?表中是否有多次出现的值?您能否验证这些数据库字段在应用程序中是否相同?@AndersLindahl-Updated。每个值只出现一次。@MarkHenderson您确定数据库中的数字只从一个“前端”值计算,而不是从2计算吗?否则,这看起来像是故意让数字难以编码/解码。@MarioRossi-不,我不是100%确定。因此,如果这里没有人能弄明白,我将假设字段中存储了不止一条数据,前端的数字代表什么?我们几个月前就完成了这个项目;但我决定看看这个。你在正确的道路上;这些数字似乎确实是位图。不完全确定它们与结果数字之间的关系,但不再关心。废话。