二次猿的进击咸鱼 2021-09-29 10:11 采纳率: 66.7%
浏览 38
已结题

C#byte类型的返回值能赋值给其他变量吗?

byte[] GetErrorTemp = compareArr_Reply(data, 3, ElecThreshold, 0, 36);
为什么这句执行后GetErrorTemp 变量的值是null?

下面是compareArr_Reply函数的具体内容:

        public static byte[] compareArr_Reply(byte[] arr1, int addr1, byte[] arr2, int addr2, int len)
        {
            List<byte> retList = new List<byte>();
            int Error_Num = 0;
            
            if (arr1.Length >= len - addr1 && arr2.Length >= len - addr2)
            {
                for (var i = 0; i < len; i++)
                {
                    if (arr1[i + addr1] != arr2[i + addr2])
                    {
                        Error_Num++;
                        retList.Add((byte)i);
                    }
                }
            }
            else
            {
                retList.Add(0xFF);
            }
            byte[] ret = new byte[retList.Count];
            ret = retList.ToArray();
            return ret;//此时ret = {0,12}
        }

  • 写回答

3条回答 默认 最新

  • wanghui0380 2021-09-29 10:51
    关注

    我们不知道你到底想干啥,无法给出明确建议。只是从代码猜测你要把 arr2的数据填充到arr1里面
    我们现在其实有很多种方式完成,我下面展示一些

     byte[] data = new byte[39];
                byte[] ElecThreshold =new byte[36];
                ElecThreshold[0] = 0x01;
                ElecThreshold[35] = 0x02;
                //直接把ElecThreshold数据copy到data里起始地址3,copy数量36
                Array.Copy(ElecThreshold, 0, data, 3, 36);
                //同等功能的函数还有
                System.Buffer.BlockCopy(data,3,ElecThreshold,0,36);
                Marshal.Copy(Marshal.UnsafeAddrOfPinnedArrayElement(ElecThreshold, 0), data, 3, 36);
    
            
                
                //当然还有其他一些方式,比如下面这样我就不多赘述了
        System.Buffers.ArrayBufferWriter<byte> writer = new ArrayBufferWriter<byte>();
                writer.Write(new ReadOnlySpan<byte>(data,0,3));
                writer.Write(new ReadOnlySpan<byte>(ElecThreshold,0,36));
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月29日
  • 修改了问题 9月29日
  • 修改了问题 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES