2012-04-23 69 views
0

我遇到了一個我似乎無法解決的問題。 我有一個類型的文件「ASDF」,並在他們的頭部我可以獲得必要的信息來閱讀它們。問題是其中一個「字段」只有4位長。讀取4位而不會丟失信息

所以,可以說是這樣的:

  • 從位0到8這是當前節點的索引(我讀過這已經)
  • 月8日至16這對指數下一個節點(閱讀以及)
  • 從位16至20內容的長度(串,等..)

所以我的問題是,如果我嘗試用bytereader閱讀「長度」我會失去4位信息,或者會失去「4比特關閉」。有沒有辦法只讀4位?

+0

你必須修改或包裹你的bytereader記住額外的4位,返回他們的下一次調用(加根據需要從下一個字節中讀取額外的位,等等) – Rup 2012-04-23 12:33:30

+0

只是不使用ByteReader(反正這是什麼)? – 2012-04-23 12:37:56

回答

1

當你閱讀別人你應該閱讀這字節然後申請爲0x0F

的位掩碼例如

byte result = (byte)(byteRead & 0x0F); 

這將在結果保持低四位。

如果所需的位是高四,那麼你可以申請移位運算

byte result = (byte)((byteRead & 0x0F) >> 5); 
+0

我的問題是,在讀完「字節」之後,我的字段從第20位開始,而不是24位。是否有可以移動流式讀取器或僅讀取4位?否則,我將讀取所有錯誤信息:/ – waclock 2012-04-23 12:37:32

+0

您的流讀取器讀取的是完整字節,而不僅僅是4位。讀取後應用掩碼。您的流式閱讀器已位於文件的第三個字節。 – Steve 2012-04-23 12:46:31