C# 日期类型转换与 C++ 相同

C# date types convertion same as c++

如何将 ulong 转换为 long 并获得与在 C++ 中相同的结果。

C++

unsigned long ul = 3633091313;
long l = (long)ul;
l is -661875983

C#

ulong ul = 3633091313;
long l = (long)ul;
l is 3633091313

C++ 的 long 通常是 32 位数据类型。看起来在您的系统中它没有足够的位来表示 3633091313,因此结果是否定的。此行为在 C++ 中未定义 (relevant Q&A)。

在C#中对应转换为int:

UInt64 ul = 3633091313UL;
Int32 l = (int)ul;
Console.WriteLine(l); // prints -661875983

Demo.