如何解决C 192位数组到4个24char数组的数组
我想在以下格式之间转换:
#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内的正确位置,然后更新目标数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。