0
要生成UINT64在以下結果 「警告C4293: '< <':移位計數負或過大,不確定的行爲」在32位系統上的UInt64,需要從UInt32的字節或數組中產生,怎麼樣?
UInt64 byteArrayToUInt64(int %stI, array<Byte>^ byteArray) {
UInt64 retV = byteArrayToUInt32(stI, byteArray);
retV |= byteArrayToUInt32(stI, byteArray) << 32;
return retV;
}
或
UInt64 byteArrayToUInt64(int %stI, array<Byte>^ byteArray) {
stI += 8;
return byteArray[stI - 8] | byteArray[stI - 7] << 0x08 | byteArray[stI - 6]
<< 0x10 | byteArray[stI - 5] << 0x18 | byteArray[stI - 4] << 0x20 | byteArray[stI - 3]
<< 0x28 | byteArray[stI - 2] << 0x30 | byteArray[stI - 1] << 0x38;
}
不幸的是,MS不得不說關於它們的UInt64結構是:
UInt64值類型表示無符號整數值範圍爲 從0到18,446,744,073,709,551,615。
UInt64提供了用於比較此類型實例的方法,將實例的值 轉換爲其字符串表示形式,並將數字的字符串表示形式轉換爲此類型的實例。
很沒用,不是嗎?
同樣的答案,你的第一個片段錯了兩次。使用BitConverter :: ToUInt64()。 –