-4

编写以下代码后,我收到错误消息,无法将类型“int”隐式转换为“byte”。存在显式转换(您是否缺少演员表?)

FileStream MyFileStream = new FileStream(fileName, FileMode.Open);
long FileSize;
FileSize = MyFileStream.Length;
byte[] Buffer = new byte[] { (((int)(FileSize)) - 1) };

帮我解决这个问题。谢谢。

解决方案:(感谢pswg)

byte[] Buffer = new byte[FileSize];

解决了这个问题。正如 pswg 建议的那样,我已将值更改为 4096 以便使用MemoryStream.

4

2 回答 2

4

看起来您正在尝试初始化 size 的字节数组FileSize。你想要的语法是这样的:

byte[] Buffer = new byte[FileSize - 1];

但是,这实际上会创建一个比文件短一个字节的缓冲区。您可能打算这样做:

byte[] Buffer = new byte[FileSize];

当然,您几乎肯定不想缓冲整个文件——否则它不会被称为缓冲区。除非您真的需要,否则我建议您将缓冲区大小降低到更适度的值(例如 4096)或将其读入 a MemoryStream

延伸阅读

于 2013-07-23T06:04:41.260 回答
0

试试这个:->

byte[] Buffer = BitConverter.GetBytes(FileSize-1);
            Array.Reverse(Buffer);
            byte[] result = Buffer;
于 2013-07-23T06:08:15.417 回答