2013-05-06 14 views
0

我有一個文件,我正在讀兩個字節。 (03,0E)。我用的是二進制讀取讓我的字節BitConverter使用Big時它應該使用小尾數

reader.ReadBytes(2), 0)//[0] = 03 and [1] = 0E 

然後我用

BitConverter.ToInt16(reader.ReadBytes(2), 0) 

轉換的轉換已經小尾數設置爲true,所以糾正我,如果我錯了,但是這意味着×03,然後爲0x0E我的結果應該是十進制的782,但它的顯示爲3587.我檢查了即時窗口和它正在交換的轉換器。我在這裏肯定錯過了一些東西,但我不知道是什麼?

+0

您是否正在從讀取器中讀取兩次或僅顯示用於測試目的的兩個版本? – 2013-05-06 13:58:50

+0

對不起,我是這樣做的插圖。 – user2144480 2013-05-06 14:06:35

回答

3

你有它向後。來自the documentation

「Big-endian」表示最高有效字節位於單詞的左端。 「Little-endian」表示最重要的字節位於單詞的右端。

所以讀取一小端系統{03},{0E}意味着0E最顯著字節,因此,當讀入的2字節結構它代表0E03在十六進制或十進制3587。

+0

數字...好的,thx! – user2144480 2013-05-06 14:06:58

+1

如果你同意,請接受這個答案,所以像我這樣的人不會花時間打開這個問題;) – 2013-05-06 14:25:22

+0

以及其實際上還沒有完全回答?根據BinaryReader的文檔,「BinaryReader以little-endian格式讀取此數據類型。」正如你可以從我的第一篇文章中看到它閱讀Big Endian,所以我仍然困惑爲什麼它沒有正確閱讀。 – user2144480 2013-05-06 16:27:17

相關問題