日期:2014-05-20  浏览次数:20798 次

c#开发碰到一个问题,同一个方法,运行在不同系统为什么读出来的数据不一样?求解答
有个很奇怪的问题,我自己的机器是xp 在上面用vs2008做开发,程序里面有这样一段代码 
          System.IO.FileStream fs;            
         System.IO.BinaryReader br;            
         fs = new System.IO.FileStream(inFile, FileMode.Open, FileAccess.Read);            
         br = new System.IO.BinaryReader(fs);            
         。。。。。  
1         float lon = br.ReadSingle(); 
2           gpfHead.fPLonRes = lon; 
3           float lat = br.ReadSingle(); 
4           gpfHead.fPLatRes = lat; 
5           char[] cReserved = new char[1808];//保留空间 
6           for (int i = 0; i < 1808; i++)            

7               cReserved[i] = br.ReadChar();            

8           gpfHead.cReserved = cReserved;            
             dingBiaoBiao = new int[8, 1024];            
              for (int i = 0; i < 8; i++)            {                
                  for (int j = 0; j < 1024; j++)                {  9                  dingBiaoBiao[i, j] = br.ReadInt32();                 
}            
}
在xp系统上和window2003上面运行读同一个文件读出来的数据不一样,具体如下:
 第7行读出来的不一样
--在xp系统上cReserved[i]的值cReserved [0] = 65533 '?'    
---在2003的系统上 cReserved[0] = 23 '' 

第9行的程序
---xp系统上 dingBiaoBiao[0, 0] = 333784
---在2003的系统上 dingBiaoBiao[0, 0] = 69545984 

不知道为什么 谢谢高手给解答
c#

------解决方案--------------------
br = new System.IO.BinaryReader(fs); 这句,lz 加上 Encoding 参数看看
估计是两个系统默认情况下的字符编码不一样
------解决方案--------------------