gpt4 book ai didi

c++ - C 192位数组到4个24char数组的数组

转载 作者:行者123 更新时间:2023-12-02 10:27:50 26 4
gpt4 key购买 nike

我想在以下格式之间转换:

#include <bitset>

std::bitset<4> input[192]; // (4 * 192 bits = 768 bits)

char output[4][24]; // (4 * 24 bytes = 768 bits)
具体来说,我想将 bitset中的四个位分别转换为单独的 char[24]数组。
最简单,最快的方式将如何?

最佳答案

我只是使用嵌套的for循环:

constexpr int kSize1 = 4;
constexpr int kSize2 = 24;
constexpr int kBitsPerChar = 8;

void convert(std::array<std::bitset<kSize1>, kSize2 * kBitsPerChar> &input,
std::array<std::array<char, kSize2>, kSize1> &output)
{
for (int i = 0; i < kSize1; ++i)
{
for (int j = 0; j < kSize2; ++j)
{
char &c = output[i][j];
c = 0;
for (int bit = 0; bit < kBitsPerChar; ++bit)
{
c |= input[j * kBitsPerChar + bit][i] << bit;
}
}
}
}


为了使之相当安全,我为所有维定义了常量,在数组声明和for循环中都使用了常量。您应根据上下文选择比 kSize1更有意义的名称。
实际上,“完成工作”的那句话很直截了当:我从源数组中取出一位,将其移到当前char中的正确位置,然后更新目标数组。

关于c++ - C 192位数组到4个24char数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63540439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com