首页 > 解决方案 > sourcearray 不够长 C#

问题描述

我有以下问题:我尝试将字节数组从我的 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.Length); // 发送的整个 HEX 数据的大小
TotalSentBytes = Convert.ToUInt32(fi.Length); //将long转换为uint
uint dataSize = TotalSentBytes;

标签: c#arrays

解决方案


问题是您将其byteCount用作方法的sourceIndex参数(请参阅Microsoft DocsArray.Copy中的签名):

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

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


推荐阅读