2013-04-03 75 views

回答

4

使用相同的代码作为答案您链接到交换,但在源和目的地周围:

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个字节,否则你会得到访问冲突。

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

+0

谢谢,这个工作正常: '子Byte2Double(byIN()作为字节,为ByRef DOUT作为双人)'' DOUT CopyMemory的,byIN(0),LENB(DOUT)'' 结束Sub' 字节数组是使用上述相同的例程创建的,在我的情况下,不需要进行错误检查,因为调用者将执行检查。 – Balbo

+1

@Balbo永远不要依赖调用者来消毒你的输入:) – Deanna