1
(谈到的Visual Basic 6)转换为8字节数组转换为双
我能找到如何convert Double into 8-bytes array,但不是反之亦然。
在我开始尝试编码之前,是否有一些例行程序来执行它(如链接问题中描述的“CopyMemory”)?在这种情况下可以使用“CopyMemory”吗?
(谈到的Visual Basic 6)转换为8字节数组转换为双
我能找到如何convert Double into 8-bytes array,但不是反之亦然。
在我开始尝试编码之前,是否有一些例行程序来执行它(如链接问题中描述的“CopyMemory”)?在这种情况下可以使用“CopyMemory”吗?
使用相同的代码作为答案您链接到交换,但在源和目的地周围:
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
我已经跳过了这个例子中的任何错误检查,但是你要确保你的字节数组实际上是8个字节,否则你会得到访问冲突。
请注意,这假定字节数组是使用链接的问题创建的。来自其他来源的浮点值可能会使用不同的二进制表示形式,这意味着这不起作用。
谢谢,这个工作正常: '子Byte2Double(byIN()作为字节,为ByRef DOUT作为双人)'' DOUT CopyMemory的,byIN(0),LENB(DOUT)'' 结束Sub' 字节数组是使用上述相同的例程创建的,在我的情况下,不需要进行错误检查,因为调用者将执行检查。 – Balbo
@Balbo永远不要依赖调用者来消毒你的输入:) – Deanna