2011-05-16 89 views
0

非常困惑,当我用下面的代码读取文件时,它打印出FFFFFF,任何人都可以向我解释这个文本文件只有数字和字母在里面?任何帮助将是最伟大的!C#在文件中使用十六进制打印FFFFFF

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

     int hexIn; 

     for (int i = 0; (hexIn = reader.Read()) != -1; i++) 
     { 

      String s; 
      s = hexIn.ToString("X2"); 
      int x = 0; 
      while (x < 1) 
      { 
       hexIn = reader.Read(); 
       s = hexIn.ToString("X2"); 
       x++; 
      } 
      hexIn = reader.Read(); 
      s = hexIn.ToString("X2"); 
      MessageBox.Show(s); 

     } 
+0

你确定*它只有字母和数字吗?它可能还有线返回,空格和EOF标记。 – mellamokb 2011-05-16 18:52:43

+1

该文件的编码是什么?你确定你的'StreamReader'使用相同的编码吗? – Oded 2011-05-16 18:55:26

+0

你提到它打印出FFFFFF。你的意思是字面意思吗?按照您的预期,文件中的字符与F中的字符的比例是2:1吗?每个'MessageBox.Show(s);'调用都显示一个带FF的消息框吗? – Tim 2011-05-16 18:59:32

回答

3

你必须每循环迭代,这意味着他们中的任何一个都可能返回-1表示文件的年底起Read电话。我怀疑那是转换为FFFFFFFF,因此你的输出。为什么你有多个Read电话?你为什么一次不读一个街区?

+0

有时候,更明显的错误就在我们面前,我们甚至没有注意到它们。我完全掩饰了这一点。 – Tim 2011-05-16 19:02:10

+0

我需要一个以上的作为我知道如何跳过几个字节的唯一方法。没有读取块,因为我需要检查每个字节的模式。 – Simon 2011-05-16 19:02:57

+0

@Jay:那么你仍然可以检查每个字节,但你现在只是检查文件的结尾,一个字节在三... – 2011-05-16 19:04:31

0

FFFFFF也可能指示一个空值。如果你编辑了Nintendo DS Roms的Hex,你会在最后看到一堆FFFFFFFF,因为这个游戏对于墨盒来说太小了,所以实际上这个文件最后可能会有空值。