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

C#数组位级转置:10×8字节数组转8×10位整数数组

嘿,看起来你需要把一个10×8的字节矩阵转置成8×10的整数矩阵——本质上就是把原矩阵的每一列(10个二进制位)拼成一个整数,对吧?我帮你梳理下逻辑并给出可运行的C#代码。

问题分析

你给出的Matrix是10个8位字节,相当于一个10行8列的二进制矩阵;目标Matrix_res10是8个整数,每个整数包含10位,对应原矩阵的8列(每列10位),把每一列的10位按顺序拼成一个整数。

从示例可以明确对应规则:

  • 目标数组的第i个元素,对应原矩阵中所有字节的第(7-i)位(比如Matrix_res10[0]对应所有字节的第7位)
  • 每一列的10位,从原数组的第0个元素到第9个元素的对应位,依次作为目标整数的第9位到第0位(高位到低位)
实现代码

以下是完全匹配你示例需求的C#代码:

// 原10×8字节矩阵
byte[] Matrix = new byte[] { 
    0b01111011, 0b10001100, 0b10101101, 0b10100001, 0b11010110, 
    0b00011100, 0b00111000, 0b11001111, 0b01111011, 0b10101010 
};

// 初始化目标8×10整数矩阵
int[] Matrix_res10 = new int[8];

for (int col = 0; col < 8; col++)
{
    int currentInt = 0;
    // 对应原字节的位位置:从第7位到第0位,匹配目标数组的顺序
    int byteBitPos = 7 - col;
    
    for (int row = 0; row < 10; row++)
    {
        // 提取当前字节的指定位
        bool isBitSet = (Matrix[row] & (1 << byteBitPos)) != 0;
        if (isBitSet)
        {
            // 将该位设置到目标整数的对应位置(原数组第0个元素对应整数最高位)
            currentInt |= 1 << (9 - row);
        }
    }
    
    Matrix_res10[col] = currentInt;
}

// 验证输出(可选,打印10位二进制字符串)
foreach (int num in Matrix_res10)
{
    Console.WriteLine(Convert.ToString(num, 2).PadLeft(10, '0'));
}
代码说明
  1. 外层循环:遍历目标数组的8个元素,对应原矩阵的8列。
  2. 字节位定位:byteBitPos = 7 - col确保我们从原字节的最高位(第7位)开始,依次取到最低位(第0位),和目标数组的顺序对应。
  3. 内层循环:遍历原数组的10个字节,用位运算&提取指定位,再用|=将该位设置到目标整数的对应位置(保证原数组第0个元素的位对应整数的最高位)。
  4. 验证输出:通过Convert.ToString把整数转成二进制字符串,PadLeft补全到10位,方便你直接核对结果是否和示例一致。

运行这段代码后,Matrix_res10的内容会完全匹配你给出的示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:45:22