C#中偏移量和长度超出数组的界限的问题

来源:互联网 发布:q币拦截软件 编辑:程序博客网 时间:2024/05/01 16:29

声明: 1.本文是在我这种情况下遇到的问题和一种解决放法,不一定能应用在所有场合。 2.欢迎拍砖。

...public static byte[] ToByteArray(string str)        {            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();            return encoding.GetBytes(str);        }string mystr = "hello";byte[] src  = new byte[count];//count > 5src = ToByteArray(mystr);file.Write(src,0,count);...

以上为示例代码段,当执行时,会提示偏移量和长度超出数组的界限。
下面是FileStream.Write()的函数声明:

void FileStream.Write(byte[] array,int offset,int count)

其中,offset为对数组array从零开始的偏移量。count为从offset位置开始要读到流中的字节个数。
(以上函数声明只是一个说明,跟本文问题相关度不大)
好了,当我调试的时候发现,数组src从src[5]开始就数据就不是0x00了,所以是ToByteArray函数的原因,将原本为0x00的数据全部清空了,具体原因我没有深究(假想一下,就像C语言里一样,给了一个’\0’结束标识符吗?),
所以会导致我想访问src[5]后面的字节出现数组越界的问题。

 long FileStream.Seek(long offset, SeekOrigin origin);

这个偏移函数,帮我成功的解决了这个问题,覆盖为0x00。
想想还是C语言好,透明。

0 0