gpt4 book ai didi

c# - 将十六进制字符串转换为日期时间的困难

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:20 25 4
gpt4 key购买 nike

我正在尝试将通过不同应用程序提供的一些十六进制字符串转换为正确的 DateTime 值,但是无论我尝试什么,该值总是错误的。十六进制字符串来自多个系统的 ShutdownTime 注册表项,在读取时由不同的应用程序转换为十六进制。

这是我试过的代码:

$shutdownkey = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Windows\' -Name ShutdownTime

$bitconverted = [DateTime]::FromFileTime([System.BitConverter]::ToInt64($shutdownkey.ShutdownTime, 0))

$hextime = "C11E6DF46024D101"

$test = [DateTime]::FromFileTime([Convert]::ToInt64($hextime, 16))

所以前两行在我使用时正常工作,例如,我自己的 ShutdownTime 键,但是当我使用最后两行或以下任何一项时:

C9520B970A69D101

0A44A6EA3300D101

C11E6DF46024D101

它要么失败,要么给我一个不可能的时间戳。但是,如果我使用像 DCode 这样的工具,它使用“Windows:64位十六进制值 - 小端”的解码格式成功转换它。从我在几个地方读到的内容来看,.NET 使用小端,所以这不应该是编码问题,但我怀疑它是。

谁能帮我弄清楚如何解决这个转换问题?这让我很困惑,为什么我无法弄清楚这一点。

最佳答案

字节顺序是落后的。时代应该倒转。例如:

C9520B970A69D101 should be 01D1690A970B52C9 
[DateTime]::FromFileTime(0x01D1690A970B52C9) gives (Tuesday, February 16, 2016 4:37:17 PM)

关于c# - 将十六进制字符串转换为日期时间的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35445806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com