看看这个问题

luli327 2010-10-21 09:23:42
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);
报 偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量,怎么解决???
...全文
64 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luli327 2010-10-22
  • 打赏
  • 举报
回复
再顶上去看看
luli327 2010-10-21
  • 打赏
  • 举报
回复
再顶上去看看
wuyq11 2010-10-21
  • 打赏
  • 举报
回复
byte[] buffer= System.IO.File.ReadAllBytes(@"");
int i = BitConverter.ToInt32(buffer, 0);
string s = Encoding.Default.GetString(buffer, 4, 60);
xu56180825 2010-10-21
  • 打赏
  • 举报
回复
要不你将headerLength+4要摸f.Read(p,0, headerLength);
xu56180825 2010-10-21
  • 打赏
  • 举报
回复
f.Read(p,4, headerLength);
如果headerLength=10的话那么你设置的参数4就是重第4个开始写入。。。而且写10个。。肯定要超出啊

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧