UInt64を生成するには、次の結果が「警告C4293:'<<':シフトカウントが負または大きすぎる、未定義の動作」になります。
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は、このタイプのインスタンスを比較し、インスタンスの値をその文字列表現に変換し、数値の文字列表現をこのタイプのインスタンスに変換するメソッドを提供します。
かなり役に立たないですね。