Я копирую двойное значение в вектор неподписанного символа.Это будет мой буфер для сокета, который должен содержать значения разных типов.Я хотел проверить, правильно ли работает копинг.Я написал небольшой код.
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.Чем я скопировал это значение в вектор.И выход НЕ равен предыдущему.Но когда я скопировал байты из вектора в двойной, я получил в doubleValue_2 то же значение, что и в doubleValue_1.Мой вопрос, почему вывод вектора отличается от двойного?Возможно, я распечатал вектор неправильно.Не могли бы вы предложить мне, как я могу сделать это правильно?Большое спасибо.