2013-04-03 77 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