这些十六进制值如何成为这个?

时间:2012-05-31 00:09:20

标签: hex

我对几个成为这些值的十六进制值感到困惑。我一直在玩这些价值观,我无法理解。也许这里有人可以告诉我这些值如何显示为十六进制或反之亦然。当我得到这些值时,它们是相反的十六进制顺序。我从左到右命令它们使事情更简单(我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,应为日期/时间格式1/1/2000
  • 38F0C46C,应为日期/时间格式1/1/2000
  • 38FEFFFF,应为-2
  • FFFDFFFF,应为-3

我知道结构是正确的,因为程序正在运行并正确创建表,每列中只有一些值处理不同。

谢谢!

1 个答案:

答案 0 :(得分:4)

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

分成单词:

00  F0C46C38 F0C46C38 FEFFFFFF FDFFFF

现在,反转前两个单词的字节顺序,你得到:

0x386CC4F0 = 946652400

哪个是

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

UTC+9 time zone的2000年1月1日午夜。太接近巧合了,我猜你或者你从那里得到的数据来自那个时区。

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

FFFFFFFE
FFFFFFFD
猜猜是什么? Two's complement表示-2和-3。