You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何更新数组值?遇仅保留4字节问题求助

问题分析与解决方案

你的问题核心出在两个关键错误上:

  • 每次处理后用BitConverter.GetBytes(t)直接替换了整个iarray,导致原本的完整数组被覆盖成仅4字节的新数组,最终写入文件的自然只有这4字节数据。
  • 循环步长逻辑混乱,i++叠加i+=3容易引发索引越界或遗漏处理,不符合4字节数据块的遍历需求。

修正后的代码

byte[] iarray = File.ReadAllBytes(path);
uint t;

// 从索引61开始,按UInt32的4字节长度步进,直到索引小于3440
for (int i = 61; i < 3440; i += 4)
{
    t = BitConverter.ToUInt32(iarray, i);
  
    if (t > 0)
    {
        t += 96;
    }
    // 将修改后的4字节数据写回原数组的对应位置,而非替换整个数组
    byte[] modifiedBytes = BitConverter.GetBytes(t);
    Array.Copy(modifiedBytes, 0, iarray, i, modifiedBytes.Length);
}   

File.WriteAllBytes(path, iarray);

关键修改说明

  • 保留原数组结构:使用Array.Copy将修改后的4字节数据写回原数组的指定索引位置,确保文件中其他未处理的字节不会被丢失或覆盖。
  • 修正遍历步长:直接设置i += 4,匹配UInt32类型的4字节长度,精准遍历需要处理的每个数据块,避免原代码的步长混乱问题。

内容的提问来源于stack exchange,提问作者skare__.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:34:54