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

二维byte数组定位指定元素及批量替换中间元素的技术求助

二维byte数组处理问题及解决方案

问题描述

处理名为byteTable的byte[,]类型二维数组,初始内容如下(括号仅为可读性标注):

00  01  E1  03  04  05
 06  07 (08) 09  0A  0B
 08  0D  0E  0F  10 (08)
 12  13  14  15  04  17
(08) 19 {1A} 1B  1C  1D
 1E  1F  20  10 (08) 23

需求如下:

  • 定位数组中唯一的0x1A元素索引;
  • 从0x1A位置垂直向上查找最近的非唯一0x08元素,获取两者间距;
  • 将0x1A到该0x08之间的所有元素(含0x1A、不含0x08)替换为0xFF;
  • 从原0x0E所在位置开始,顺时针重复上述操作。

同时需要判断:选择从0x1A垂直方向出发,沿顺时针遍历至0x08为止,替换路径上的元素为0xFF,哪种方案更可行?

最终预期结果:

00  FF  E1  03  04  05
 06  FF  08  09  0A  0B
 08  FF  FF  FF  FF  08
 12  FF  FF  15  FF  17
 08  FF  FF  FF  FF  1D
 1E  1F  20  10  08  23

解决方案与方案对比

步骤拆解(按原始需求)

  1. 定位0x1A的索引:遍历数组,找到值为0x1A的元素,其索引为(4,2)(行、列索引均从0开始)。
  2. 垂直向上找最近的非唯一0x08:从行号4的列2位置逐行向上检查:
    • 行3列2:0x14,不是0x08;
    • 行2列2:0x0E,不是0x08;
    • 行1列2:0x08,即为目标元素,两者间距为4-1=3行。
  3. 替换元素:将行2到行4的列2元素(不含行1列2的0x08)替换为0xFF。
  4. 从原0x0E(行2列2)顺时针重复操作:按照顺时针方向遍历路径,依次找到各段的起点与对应0x08终点,替换路径内元素:
    • 从行2列2向左到行2列1,再向上到行0列1,直至行1列2的0x08,替换路径元素为0xFF;
    • 从行2列2向右到行2列5的0x08,替换行2列3、行2列4为0xFF;
    • 从行2列2向下到行4列2,再向右到行4列4,向上到行3列4,替换这些元素为0xFF;
    • 从行2列2向下到行4列2,向左到行4列1,向上到行1列1,替换这些元素为0xFF。

方案可行性对比

  • 原始分步方案:逻辑直白,每一步目标明确,适合入门级实现,能精准控制替换范围,但需要多次遍历和定位,代码冗余度较高。
  • 顺时针遍历替换方案:直接匹配预期结果中连续FF的路径形态,可一次性完成多段替换,减少重复遍历次数,代码效率更高,但需要明确顺时针遍历的边界规则和方向切换逻辑,对逻辑严谨性要求更高。

结合最终预期结果的形态,顺时针遍历替换方案更可行,它能直接对应结果中的连续修改区域,避免分步操作的冗余步骤,实现效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:56:04