Vb6 将Double转换为8字节数组

Vb6 将Double转换为8字节数组,vb6,Vb6,我想将一个Double变量转换成一个8字节的数组,这是我到目前为止得到的: Dim b(0 To 7) As Byte Dim i As Integer dim d as double d = 1 ' for simplicity, I sit the variable "d" to 1 For i = 0 To 7 Call CopyMemory(b(i), ByVal VarPtr(d) + i, 1) Next i ' b => [0, 0, 0,

我想将一个
Double
变量转换成一个8字节的数组,这是我到目前为止得到的:

Dim b(0 To 7) As Byte
Dim i As Integer

dim d as double
d = 1            ' for simplicity, I sit the variable "d" to 1

For i = 0 To 7
    Call CopyMemory(b(i), ByVal VarPtr(d) + i, 1)
Next i

' b => [0, 0, 0, 0, 0, 0, 240, 63]

我做错了什么?

您没有显示declare语句,但是CopyMemory可以根据不同的用途进行不同的声明。尝试:

Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
                                                 ByVal pDst As Long, _
                                                 ByVal pSrc As Long, _
                                                 ByVal ByteLen As Long _
                                                 )

不要使用循环,请使用长度参数:

Option Explicit

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

Sub DblToByte(ByVal D As Double)
    Dim Bytes(LenB(D) - 1) As Byte
    Dim I As Integer
    Dim S As String

    CopyMemory Bytes(0), D, LenB(D)

    For I = 0 To UBound(Bytes)
        S = S & CStr(Bytes(I)) & " "
    Next
    MsgBox S
End Sub

Private Sub Form_Load()
    DblToByte 1
    Unload Me
End Sub
还有一个例子。