在编写以下代码后,我将错误视为无法将类型'int'隐式转换为'byte'。存在显式转换(您是否缺少演员?)
FileStream MyFileStream = new FileStream(fileName, FileMode.Open);
long FileSize;
FileSize = MyFileStream.Length;
byte[] Buffer = new byte[] { (((int)(FileSize)) - 1) };
帮我解决这个问题。感谢。
解决方案:(感谢p.s.w.g)
byte[] Buffer = new byte[FileSize];
解决了这个问题。正如p.s.w.g建议我将值更改为4096以便使用MemoryStream
。
答案 0 :(得分:4)
看起来您正在尝试初始化大小为FileSize
的字节数组。你想要的语法是:
byte[] Buffer = new byte[FileSize - 1];
但是,这实际上会创建一个比文件短一个字节的缓冲区。您可能打算这样做:
byte[] Buffer = new byte[FileSize];
当然,你几乎肯定不想缓冲整个文件 - 否则它不会被称为缓冲区。除非你真的需要,否则我建议你将缓冲区大小调整到更适度(比如说4096)或者把它读成MemoryStream
。
进一步阅读
答案 1 :(得分:0)
试试这个: - >
byte[] Buffer = BitConverter.GetBytes(FileSize-1);
Array.Reverse(Buffer);
byte[] result = Buffer;