gpt4 book ai didi

c++ - 将数据复制到特定位位置

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:24 25 4
gpt4 key购买 nike

我需要将4条数据复制到一个字节数组中,但数据需要复制到特定的位位置。

这是一个例子。

我的4条数据如下。它们按二进制文件中详细说明的从左到右的顺序排列,并用连字符分隔以便可见:

  • 1341 = 0x05D3(始终截断为 14 位)
  • 0001 = 0x0001(始终截断为 14 位)
  • 987654 = 0x0F1206(始终截断为 20 位)
  • 20110411 = 0x0132DC4B(始终截断为 25 位)

完成必要的输出:

0C 53 D0 00 7C 48 1A 65 B8 97

在二进制中,第一位和最后一位是奇偶校验:

1-00010100111101-00000000000001-11110001001000000110-1001100101101110001001011-1

我不知道该怎么做。有可能以某种方式使用位移位吗?

最佳答案

我建议您使用 std::bitset 来表示您的数字。虽然以下内容NOT 可以解决您的问题,但我想知道它是否可以帮助您到达想要的位置?

#include<iostream>
#include<iomanip>
#include<bitset>

struct Data {
std::bitset<14> d1;
std::bitset<14> d2;
std::bitset<20> d3;
std::bitset<25> d4;
Data(unsigned int d1, unsigned int d2, unsigned int d3, unsigned int d4)
: d1(d1),
d2(d2),
d3(d3),
d4(d4) {}
};

std::ostream& operator<<(std::ostream& os, const Data& data) {
os<<data.d1<<"-"
<<data.d2<<"-"
<<data.d3<<"-"
<<data.d4;
return os;
}

int main() {
Data d(1341, 1, 987654, 20110411);
std::cout<<d<<std::endl;
}

输出:

00010100111101-00000000000001-11110001001000000110-1001100101101110001001011

关于c++ - 将数据复制到特定位位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327268/

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