2011-03-09 25 views
0

在手冊中他們寫了FF8055AAh。 在程序中,我找到了值AA5580FF。 這不是小的或大端的。但是它是什麼?我有哪種排列順序?

+0

爲什麼你說這不是小的或大的endian。 – Zimbabao 2011-03-09 13:03:53

+1

其中之一是(幾乎肯定)小端,在這種情況下,另一個是大端,但沒有更多的上下文,不可能說哪個是哪個。他們應該代表什麼價值? – LukeH 2011-03-09 13:04:46

+0

爲什麼這不是小端?假設第一個值是原始值... – 2011-03-09 13:05:02

回答

3

這是小端(假設手冊中的值是大英)。字節是{FF,80,55,AA},所以當你反轉它們時,你有{AA,55,80,FF}。

+0

你怎麼能所以確定它不是大端的,用字節「{AA,55,80,FF}」代替? – LukeH 2011-03-09 13:07:29

+0

因爲我自動假定手冊中的值是big-endian :) – mgronber 2011-03-09 13:08:37

1

如果您的處理器是面向字節的(大多數現代處理器都是),它可能是小端或大端。請注意,一個字節是兩個十六進制數字。

0

您可以使用一個小程序按照以下檢查字節序:

http://c-faq.com/misc/endiantest.html

從你發佈你的字節順序是相反的手冊。字節順序交換是令人困惑的,但是每個單詞存儲在大或小端,導致交換爲從AABB CCDD到DDCC BBAA(16位字)。

0

我從你的previous question中收集你想要將這些十六進制值轉換爲單精度表示。使用online hexadecimal-to-floating-point converter,這就是我得到:

  • FF8055AA成爲-NaN
  • AA5580FF成爲-1.8962955e-13

所以,真正的問題是,這些號碼中的一個看起來像你所期望在你的數據文件中看到?無論哪一個看起來像你想要的那樣,將數據文件視爲具有字節序,以便在加載和轉換時爲其提供該值。

+0

該值不是IEEE 754.此文件中有許多數據類型。 – kame 2011-03-10 07:32:50