Borland TDateTime到.net DateTime的转换
Borland TDateTime to .NET DateTime conversion
我有一个类似于
的数字到日期转换问题如何在c#中转换双精度值到日期时间?
我所拥有的时间信息是从UDP数据流中提取的8字节长。它被编码为来自Borland c++中的TDateTime对象的double,它与COM datetime具有兼容性。
我在visual studio c#中解码这个数据流,任何对DateTime对象的转换都会产生奇怪的日期。
我认为DateTime.FromBinary()可能会奏效,但这也不能正确解码时间/日期。
现在()的十六进制值在两个系统之间有很大的不同:
Borland: 0x 40E4A17C20782C71
C# : 0x 8E6EA19D6CB5D288
这些值彼此相隔几秒钟,但明显不同。
如果有人对如何转换这个有任何建议,我将不胜感激!
BitConverter
(如何在c#中将字节数组转换为双数组?)与DateTime.FromOADate
(如何在c#中将双值转换为日期时间?)相结合是您所追求的:
var date = DateTime.FromOADate(BitConverter.ToDouble(
(new byte[]{0x40,0xE4,0xA1,0x7C,0x20,0x78,0x2C,0x71}).Reverse().ToArray(),
0));
注意-根据你读取字节的方式,你可能需要使用非0偏移(如果你读取字节数组),可能不需要Reverse
(可能取决于系统之间的endianness)。还取决于您读取数据的方式,如BinaryReader.ReadDouble
可能是从传入的二进制数据中获得double
的更好选择。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从c++11 time_t创建一个可转换为.net DateTime的字符串
- 如何在现代C 中转换为DateTime
- 将MySQL DateTime转换为C STD :: TIME_T
- 将datetime c++结构(以字节形式接收)转换为c#日期时间实例
- 将系统::Datetime转换为QDateTime
- C++ Boost将UNIX时间戳转换为MySQL兼容的DATETIME字符串
- 正在将SYSTEMTIME(本机C++)转换为DateTime(C#)
- 将UTCTime转换为DateTime
- 如何从std::tm转换为Windows::Foundation::DateTime
- 将一天中的小时和一周中的天转换为c++中的datetime
- Borland TDateTime到.net DateTime的转换