将 8 字节数组转换为 Double

Bal*_*lbo 2 vb6

(谈 Visual Basic 6)

我能够找到如何将 Double 转换为 8-bytes array,但反之亦然。

在我开始尝试编码之前,是否有一些例行程序可以做到(如链接问题中描述的“CopyMemory”)?在这种情况下可以使用“CopyMemory”吗?

Dea*_*nna 5

使用与您链接的答案相同的代码,但交换源和目标:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    ByRef Destination As Any, _
    ByRef Source As Any, _
    ByVal Length As Long)

Function BytesToDbl(ByRef Bytes() As byte) As Double
  Dim D As Double
  CopyMemory D, Bytes(0), LenB(D)
  BytesToDbl = D
End Function
Run Code Online (Sandbox Code Playgroud)

我跳过了这个例子的任何错误检查,但你需要确保你的字节数组实际上是 8 个字节长,否则你会得到访问冲突。

请注意,这假设字节数组是使用链接到问题创建的。来自其他来源的浮点值很可能使用不同的二进制表示,这意味着这将不起作用。