2011-12-02 33 views
-2

当我运行我的程序代码下面的错误出现:二进制读取问题

///////////////////////////// Read in the selected ////////////// 
BinaryReader br2 = new BinaryReader(File.OpenRead(directoryToSearch2), 
            System.Text.Encoding.BigEndianUnicode); 

var Hexbytes = new List<string>(); 

///////////////////////////// Read in offset //////////////// 
for (int a = 0x12 ; a <= 0x26; a++) 
{ 
    br.BaseStream.Position = a; 
    Hexbytes.Add(br.ReadByte().ToString("X2")); 
} 

主线调试器不喜欢的是这个br.BaseStream.Position = a;

它指出,“的NullReferenceException是未处理”和“对象引用不设置到对象的实例。

任何想法是什么问题呢?

+2

其中在您的代码段中定义了br –

+2

我们可以看到br的定义吗?或者你的意思是br2? – MGZero

+0

我的意思是br2 ...我从来没有意识到,直到你指出它的意思是br2 ...我觉得很愚蠢,特别是我在这里坐了一个多小时:(......我想这就是你得到的对变量进行严重命名....非常感谢你花了这么多心思 – user826436

回答

0

因为br或br.BaseStreamnull

1

随着您发布的代码,我们无法确定br是什么。当使用的对象之一为空时,将包含一个NullReferenceException。在您的例外情况下,底层BaseStream可能为空或br本身为空。

当调试程序中断时,将鼠标悬停在br上,看看它显示了什么,如果它不为空,请滚动查找BaseStream并查看它是否为空。

我的猜测是?您创建一个新的BinaryReader对象,称为br2并且正在访问属性br