2011-04-08 31 views
2

我在手動讀:指定開始與 第一個字節的MSB位流讀出順序

對於位輸送,將比特 爲了使字節流格式是 ,繼續進行到LSB的 第一個字節,然後是第二 字節的最高位,等

在我的申請,我不得不應付位。 (例如我有十進制數5,以二進制格式,它看起來像00000101) 所以,是指(按照手冊)位予讀的順序是

<= 0 <= 0 <= 0 <= 0 <= 0 <= 1 <= 0 <= 1 (first read bit I read is 0, second is 0 etc....) 

,或者它意味着讀取該命令位:

<= 1 <= 0 <= 1 <= 0 <= 0 <= 0 <= 0 <= 0 (first read bit I read is 1, second is 0 etc....) 

感謝

回答

2
  • MSB:最顯著位
  • LSB:最低顯著位

所以對於5(0000_0101)左(佔2 )該位是 「最顯著」 和(代表2 )是「最不重要的」。因此,是的,期望0是第一位。

1

在Java中,字節讀取和寫入數據流的默認方法會自動默認爲網絡字節順序,因此你可能好去。

+0

謝謝,但我與字節流的水平低解析工作,所以我瞭解字節位的順序。 – stemm 2011-04-08 12:35:54

+0

我不認爲你會這樣做。只需使用返回單個字節的調用即可。 – dty 2011-04-08 15:44:35

1

如果您的數據流中的前幾個字節是0x7D,0x01,那麼位流開始0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1

+0

謝謝,理解:) – stemm 2011-04-08 12:37:51

+0

@stem:我沒明白0x7D,0X01。請你解釋一下。 – 2011-04-08 12:56:42

+0

@Suresh:如果流中的第一個字節具有十六進制值「7D」(=十進制125),而第二個具有十六進制值「01」(=十進制值1),則位流開始爲'0,1,1 ,1,1,1,0,1,0,0,0,0,0,0,0,1'。這是否更清楚? – 2011-04-08 13:02:13

1

字節順序大多被稱爲字節順序。你有大端系統和小端系統。

Big endian您首先得到最高有效位,最小有效位是第一位。

大部分網絡流量都是大端。 X86機器總是小端。

Here大約是字節序的詳細信息

+0

這有點誤導。僅僅因爲X86機器是小端的,任何符合RFC的網絡流量仍然是「網絡字節順序」 - 即大端。 – dty 2011-04-08 15:49:00