2011-05-16 74 views
0

我正在使用C#讀取文件,我需要(有時)在輸出下一個字節之前跳過幾個字節。例如:C#skip hex charcters

31 32 33 34 35 36 37 38 39 

我想跳過前兩個(或任何給定的數字)字節,然後輸出下一個。問題是,使用下面的代碼將不會這樣做,我不知道如何。我需要能夠在整個程序中使用「跳過」功能。如果有人能幫助我,我將非常感激!

 String fileDirectory = "C:\\t.txt"; 
     StreamReader reader = new StreamReader(fileDirectory); 
     long stickNoteLength = fileDirectory.Length; 

     int hexIn; 
     String hex = ""; 

     for (int i = 0; (hexIn = reader.Read()) != -1; i++) 
     { 
      for (int x = 0; x < 2; x++) 
      { 
       hex = hexIn.ToString("X2"); 
      } 
      MessageBox.Show(hex); 
     } 
+0

您發佈的代碼不(int x = 0; x <2; x ++) {hex} = hexIn.ToString(「X2」);在這個問題 – 2011-05-16 04:31:37

+0

中, }與沒有 – 2011-05-16 04:37:04

回答

2

您的內循環x不會消耗文件中的任何字符。從字面上看,只是取出當前字節並將其轉換爲十六進制十六進制,實際上什麼都不做。它實際上是i上的外環,它會消耗字符。你想要做的事更是這樣的:

for (int i = 0; (hexIn = reader.Read()) != -1; i++) 
{ 
    if (i >= 2) 
    { 
     hex = hexIn.ToString("X2"); 
     MessageBox.Show(hex); 
    } 
} 

雖然這將是更有效的只使用Seek功能直接跳到您希望未來閱讀:

reader.BaseStream.Seek(2, SeekOrigin.Current); // jump two characters forward 
+0

的問題相同問題是我不知道我想從哪裏開始取決於很多變量,我也不知道「我」將會如何使用您的解決方案,但是,謝謝我的幫助:) – Simon 2011-05-16 04:42:08

+0

好的,你剛剛完全否認了我的解決方案,並沒有任何意義。清楚說明你想要做什麼!我現在已經完全回答你的問題了......我怎麼讀你的想法? – mellamokb 2011-05-16 04:43:33

+0

對不起。我需要使用十六進制讀取文件,但是在任何給定的時間,我需要跳過一定數量的字節,然後繼續讀取文件,問題是我不知道需要跳過多少字節,並且沒有點我會知道什麼是「我」將無法使用旋轉我需要跳過的字節數。 – Simon 2011-05-16 04:46:21