簡體   English   中英

c ++打印出矢量的bitset <unsigned char>

[英]c++ print out bitset of vector<unsigned char>

我將double值復制到unsigned char的向量。 它將是我的socket緩沖區,它應該包含不同類型的值。 我想測試應對是否正常。 我寫了一個小代碼。

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中的值相同。 我的問題是,為什么向量的輸出不同於雙倍? 也許我以錯誤的方式打印出矢量。 你能建議我怎么做才能正確嗎? 非常感謝。

bitset<64>bitset_1(doubleValue_1); 將你的double轉換為unsigned long (因為這是bitset<64>構造函數所采用的。)

類似地,對於bitset<64>bitset_2(doubleValue_2);

兩個人實際上都沒有用double位表示清盤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM