无法将类型'int'隐式转换为'byte'。存在显式转换(您是否错过了演员?)

时间:2013-07-23 06:01:59

标签: c# asp.net file file-io byte

在编写以下代码后,我将错误视为无法将类型'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

2 个答案:

答案 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;