2016-11-20 100 views

回答

1

QByteArraychar的數組。顯然,您的平臺上的char已簽名且寬度爲8位。因此,你的問題可以被蒸餾以:

char c = 0x80; 
quint32 = c << 8; 

的標準授權:

N4606§4.8 [conv.integral]/3

如果目標類型有符號,則該值如果它可以是在目的地類型中表示的 ;否則,值爲 實現定義。

在這種情況下(如常2的補碼系統),0x80被映射到std::numeric_limits<char>::min() == -128,因爲它們共享相同的底層的比特模式是合乎邏輯的。

現在,-128 << 8定義爲-128 * 2 ,即-32768。

最後,從-32768 32位無符號整數的轉換被很好地定義和產量4294934528

+0

我最終使用'QDataStream'用於轉換。如果有人感興趣。 – Barracuda

相關問題