我是c#
初学者并尝试读取二进制文件来计算frequency
内symbols
的{{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的对象时会创建问题。有人可以帮助我如何通过提供解决方案摆脱这个问题(任何一段代码将受到高度赞赏)?谢谢。
答案 0 :(得分:2)
如果文件的大小不是8个字节(64位)的大小,则最后ReadBytes()
将导致byte[]
小于8个字节,导致ToInt64()
失败