C++ 打印出矢量<无符号字符的位集>
c++ print out bitset of vector<unsigned char>
我将双值复制到无符号字符的向量中。它将是我的套接字缓冲区,它应该包含不同类型的值。我想测试一下应对方式是否正确。我写了一个小代码。
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。然后我把这个值复制到矢量上。并且输出与前一个不相等。但当我将字节从向量转换为doubleback时,我得到的doubleValue_2值与doubleValue_1中的值相同。我的问题是,为什么向量的输出与二重的输出不同?也许我把矢量打印错了。你能建议我怎样才能正确地做吗?非常感谢。
bitset<64>bitset_1(doubleValue_1);
正在将double
强制转换为unsigned long
(因为bitset<64>
构造函数就是这样做的)
与CCD_ 5类似。
实际上,这两个都没有以double
的比特表示结束。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存