0

我对成为这些值的一些十六进制值感到非常困惑。我一直在玩弄这些值,但我无法弄清楚。也许这里有人可以给我一个线索,说明这些值如何显示为十六进制或反之亦然。当我得到这些值时,它们是十六进制的倒序。我从左到右对它们进行排序以使事情变得更简单(我 99% 确信这些值应该是相反的顺序,因为我得到的其他值是相反的顺序)。

  • 6C C4 F0 00 应成为日期/时间格式的 1/1/2000。
  • 6C C4 F0 38 也应该是 2000 年 1 月 1 日,但我不确定这是怎么回事。
  • 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

1 回答 1

4

您的字节顺序错误。第一个字节似乎是死空间或以其他方式被占用,我打赌你离开FF了你向我们展示的内容。

拆分成单词:

00  F0C46C38 F0C46C38 FEFFFFFF FDFFFF

现在,颠倒前两个字的字节顺序,你会得到:

0x386CC4F0 = 946652400

哪个是

$ date -ur 946652400
Fri Dec 31 15:00:00 UTC 1999

所以UTC+9 时区的 2000 年 1 月 1 日午夜。太接近了,不可能是巧合,我猜你或者你从哪里获得数据的地方都在那个时区。

现在,以正确的字节顺序排列接下来的两个字:

FFFFFFFE
FFFFFFFD

你猜怎么着?-2 和 -3的二进制补码表示。

于 2012-05-31T02:11:25.427 回答