源数组不够长 C#

  • 本文关键字:不够 数组 c# arrays
  • 更新时间 :
  • 英文 :


我有以下问题: 我尝试将字节数组从我的 PC 发送到设备。可以发送的最大数据为 59 字节。字节 1-4 用于计算发送的包裹。因此,每个包的字节总数为 55

。现在我得到一个错误源数组不够长,即使剩余字节超过 55。

有人知道我的问题是什么吗?

uint RAW_DATA_SIZE = 55; 字节[] 参数; uint byteCount = 0; FileInfo fi = new FileInfo (Path.GetFileNameWithoutExtension(args[0](+".hex"(; Console.WriteLine(fi.长度(;              发送的整个十六进制数据的大小 TotalSentBytes = Convert.ToUInt32(fi.长度(;  将长整型转换为 uint uint dataSize = TotalSentBytes;

问题是您使用byteCount作为Array.Copy方法的sourceIndex参数(请参阅Microsoft文档中的签名(:

Array.Copy(Encoding.ASCII.GetBytes(content), 0, parameters, 
4 * sizeof(byte), remainingBytes > RAW_DATA_SIZE ? RAW_DATA_SIZE : remainingBytes);

我已将byteCount替换为 0,因为您想从源数组的开头复制。

好的,我现在有了答案。 我使用 Fileinfo 来获取要发送的总字节数。

FileInfo fi = new FileInfo (Path.GetFileNameWithoutExtension(args[0])+".hex");
Console.WriteLine(fi.Length);               // Size of the whole HEX data sent
TotalSentBytes = Convert.ToUInt32(fi.Length);   //Convert long to uint

现在我通过以下方式获取保存在 .hex 文件中的字节数组的长度:

byte[] contentOfBytes = Encoding.ASCII.GetBytes(content); //get content of hex-file
uint dataSize = Convert.ToUInt32(contentOfBytes.Length);  //get number of elements in the bytearray

现在我不再收到任何错误了。

最新更新