gpt4 book ai didi

C++打印出 vector 的位集

转载 作者:太空狗 更新时间:2023-10-29 20:06:44 24 4
gpt4 key购买 nike

我正在将 double 值复制到 unsigned char 的 vector 中。这将是我的套接字缓冲区,它应该包含不同类型的值。我想测试应对是否正确。我写了一个小代码。

vector<unsigned char> buffer(8);
double doubleValue_1 = 8.0;
memcpy(&buffer[0], &doubleValue_1, sizeof( doubleValue_1));

bitset<64>bitset_1(doubleValue_1);
cout << "doubleValue_1: " << bitset_1 << endl;

cout << "buffer: ";
for (int i = 0; i < buffer.size(); i++) {
bitset<8>bitset_v(buffer.at(i));
cout << bitset_v;
}

cout << endl << endl;

double doubleValue_2;
memcpy(&doubleValue_2, &buffer[0], sizeof(doubleValue_2));

bitset<64>bitset_2(doubleValue_2);
cout << "doubleValue_2: " << bitset_2 << endl;

我得到了输出:

doubleValue_1: 0000000000000000000000000000000000000000000000000000000000001000
buffer: 0000000000000000000000000000000000000000000000000010000001000000
doubleValue_2: 0000000000000000000000000000000000000000000000000000000000001000

怎么看,第一个doubleValue_1代表8.0。比我将这个值复制到 vector 。并且输出不等于前一个。但是,当我将字节从 vector 处理到双倍返回时,我在 doubleValue_2 中得到了与 doubleValue_1 中相同的值。我的问题是,为什么 vector 的输出与 double 的不同?也许我以错误的方式打印出 vector 。你能建议我如何正确地做到这一点吗?非常感谢。

最佳答案

bitset<64>bitset_1(doubleValue_1);正在类型转换你的 doubleunsigned long (因为这就是 bitset<64> constructor 需要的。)

同样适用于 bitset<64>bitset_2(doubleValue_2); .

两者都没有真正以 double 的位表示结束。 .

关于C++打印出 vector 的位集<unsigned char>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429115/

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