c#中未处理的异常,目标数组不够长,无法复制集合中的所有项目

时间:2014-03-21 14:12:22

标签: c#

我是c#初学者并尝试读取二进制文件来计算frequencysymbols的{​​{1}}。 (频率是符号重复的时间)。

在我采取的第一步中,我将binary file的{​​{1}}读为data type并且代码正常工作。 但是现在我想将这个符号设为 "symbol" (我的意思是"int"类型)。

代码编译出ubantu终端中的任何错误。

但是当我使用generic type执行时,会在<T>读取此二进制文件。请最后看看我如何获得这个二进制文件 toto.bin。

错误是:

"mono filename.exe BinaryFile.bin"

我的完整代码是(缩小代码):

sole argument

我认为在hp@ubuntu:~/Desktop/Internship_Xav/templatescplus$ mono test.exe toto.bin Unhandled Exception: System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.BitConverter.PutBytes (System.Byte* dst, System.Byte[] src, Int32 start_index, Int32 count) [0x00000] in <filename unknown>:0 at System.BitConverter.ToInt64 (System.Byte[] value, Int32 startIndex) [0x00000] in <filename unknown>:0 at shekhar_final_version_Csharp.Huffman`1[System.Int64]..ctor (System.String[] args, System.Func`3 converter) [0x00000] in <filename unknown>:0 at shekhar_final_version_Csharp.MyClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: Destination array is not long enough to copy all the items in the collection. Check array index and length. at System.BitConverter.PutBytes (System.Byte* dst, System.Byte[] src, Int32 start_index, Int32 count) [0x00000] in <filename unknown>:0 at System.BitConverter.ToInt64 (System.Byte[] value, Int32 startIndex) [0x00000] in <filename unknown>:0 at shekhar_final_version_Csharp.Huffman`1[System.Int64]..ctor (System.String[] args, System.Func`3 converter) [0x00000] in <filename unknown>:0 at shekhar_final_version_Csharp.MyClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 hp@ubuntu:~/Desktop/ 中创建类型为Huffman的对象时会创建问题。有人可以帮助我如何通过提供解决方案摆脱这个问题(任何一段代码将受到高度赞赏)?谢谢。

1 个答案:

答案 0 :(得分:2)

如果文件的大小不是8个字节(64位)的大小,则最后ReadBytes()将导致byte[]小于8个字节,导致ToInt64()失败