当前位置:编程学习 > C#/ASP.NET >>

看看这个问题

 public int ConvertByte2Int(byte[] b,int start,int count)
        {
            byte[] ss = new byte[count];
            int j = 0 ;
            for (int i = start; i < b.Length && j < count; i++)
            {
                ss[j] = b[i];
                j++;
            }
            return BitConverter.ToInt32(ss, 0);
        }


 int pageWidth, pageHeight, totalPages, headerLength;
            FileStream f = File.OpenRead(@"e:\test\1.docin");
            //if(mFile.GetLength()<2) return; 
            //Stream f=
            if (f.Length < 2) return;
            //mFile.SeekToBegin();
            //mFile.Read(&pageWidth,4); 
            //mFile.Read(&pageHeight,4); 
            //mFile.Read(&totalPages,4); 
            //mFile.Read(&headerLength,4); 
            byte[] temp = new byte[16];
            f.Read(temp, 0, 16);
            pageWidth = ConvertByte2Int(temp, 0, 4);
            pageHeight = ConvertByte2Int(temp, 4, 4);
            totalPages = ConvertByte2Int(temp, 8, 4);
            headerLength = ConvertByte2Int(temp, 12, 4);

            //BYTE *com=new BYTE[headerLength];
            //mFile.Read(com,headerLength); 
            byte[] p = new byte[headerLength];
            f.Read(p,4, headerLength);
报  偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量,怎么解决??? --------------------编程问答-------------------- --------------------编程问答-------------------- f.Read(p,4, headerLength);
如果headerLength=10的话那么你设置的参数4就是重第4个开始写入。。。而且写10个。。肯定要超出啊 --------------------编程问答-------------------- 要不你将headerLength+4要摸f.Read(p,0, headerLength);
--------------------编程问答-------------------- byte[] buffer= System.IO.File.ReadAllBytes(@"");
int i = BitConverter.ToInt32(buffer, 0);
string s = Encoding.Default.GetString(buffer, 4,  60);
--------------------编程问答-------------------- --------------------编程问答-------------------- 再顶上去看看 --------------------编程问答-------------------- 再顶上去看看
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,