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

如何将1字节数组元素转换为2字节?求正确实现方案

1字节元素转2字节存储的正确实现

原代码存在的问题

  • 循环逻辑错误:j<2的条件仅限制了两次赋值,无法遍历整个原数组的所有元素
  • 赋值操作覆盖:先给arr_2[j]赋值高四位,紧接着又对arr_2[j++]赋值低四位,导致高四位的赋值被直接覆盖,最终只保留了低四位数据
  • 数组大小逻辑错误:原数组arr[size]包含size个1字节元素,转换后的arr_2需要2*size的空间才能存储所有拆分后的2字节数据,而非和原数组同大小

正确实现代码

以C语言为例,假设原数组arr长度为size,目标数组arr_2长度为2*size:

int i, j = 0;
for(i = 0; i < size; i++){
    // 提取高4位,右移4位后得到对应高位值
    arr_2[j++] = (arr[i] & 0xF0) >> 4;
    // 提取低4位,直接得到对应低位值
    arr_2[j++] = arr[i] & 0x0F;
}

代码说明

  • 遍历原数组的每个元素,对每个元素分别提取高4位和低4位
  • 先将高4位存入arr_2的当前位置,再将低4位存入下一个位置,通过j++依次推进目标数组的索引
  • 确保目标数组arr_2的空间足够,避免越界访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:16:55