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