无法隐式转换类型';int';到';字节';.存在显式转换(是否缺少强制转换?)

本文关键字:转换 是否 显式转换 类型 int 字节 存在 | 更新日期: 2023-09-27 18:24:16

在编写以下代码后,我得到的错误为无法将类型"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建议的那样,为了使用MemoryStream,我已经将值更改为4096。

无法隐式转换类型';int';到';字节';.存在显式转换(是否缺少强制转换?)

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

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

然而,这实际上会创建一个比文件短一个字节的缓冲区。你可能打算这么做:

byte[] Buffer = new byte[FileSize];

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

进一步阅读

  • 数组(C#编程指南)

试试这个:->

byte[] Buffer = BitConverter.GetBytes(FileSize-1);
            Array.Reverse(Buffer);
            byte[] result = Buffer;
相关文章: