【发布时间】:2012-05-31 00:09:20
【问题描述】:
我对变成这些值的一些十六进制值感到非常困惑。我一直在玩弄这些值,但我无法弄清楚。也许这里有人可以给我一个线索,说明这些值如何显示为十六进制,反之亦然。当我得到这些值时,它们是十六进制的倒序。我将它们从左到右排序以使事情变得更简单(我 99% 确信这些值应该是相反的顺序,因为我得到的其他值是相反的顺序)。
- 6C C4 F0 00 应变为日期/时间格式的 1/1/2000。
- 6C C4 F0 38 也应该是 1/1/2000,但我不确定这是怎么回事。
- FF FF FE 38 应为 -2。
- 00 FF FF FF 应该是 0。
- FF 00 00 00 应该是 -1。
如果有人能帮我解决这个问题,我将不胜感激!谢谢!
原始数据:
00F0C46C38F0C46C38FEFFFFFFFDFFFF
原始数据以 4 个字节为一组,以十六进制倒序排列。
- 00F0C46C,应为 2000 年 1 月 1 日的日期/时间格式
- 38F0C46C,应为 2000 年 1 月 1 日的日期/时间格式
- 38FEFFFF,应该是-2
- FFFDFFFF,应该是-3
我知道结构是正确的,因为程序正在运行并正确创建了一个表,每列中只有一些值的处理方式不同。
谢谢!
【问题讨论】:
-
这非常令人困惑;你有这个问题的额外背景吗?作业说明,或您试图逆向工程的某些源/协议?
-
给我们一个原始数据(没有任何排序)和任务描述。可能是你下错了订单。
-
根据我的经验,并不是所有的十六进制值都可以代表一个值。例如,每个第 4 字节可以代表某种有效性标志,甚至可以是一个CRC 码。你能给出程序的名称,你试图反转哪个协议?你能给出这样的数据吗(如果可能的话):从程序中检索几个描述相同参数的字节序列。所以我可以比较一下,至少做一些猜测。
-
我的意思是,如果您有 ParameterA 略有变化,请您对参数进行多次重复测量吗?它至少有助于确定所有字节是否有价值。
-
程序是我做的。我不介意给你它的源代码,但我不怀疑它会有所帮助。我确实认为 4 字节值是有效标志,但我不知道它是如何开始的。我尝试了简单的数学运算并使用侧翼数字来确定特定值,但我就是想不通。我可以给你我正在尝试转换的文件和我的程序的源代码,以向你展示我在说什么。
标签: hex