原码:

解决方案 »

  1.   

    晕了..
    继续说    Open "d:\binary.bin" For Binary As #1
        Put #1, , 25.625
        Close #1打开此文件查看存储结构:
    00 00 00 00 00 A0 39 40 然后将其读到二进制数组中:
        Dim b() As Byte
        Open "d:\binary.bin" For Binary As #1
        ReDim b(LOF(1) - 1) As Byte
        Get #1, , b
        Close #1
    输出:
    0 0 0 0 0 160 57 64请教我怎样才能得到 25.625,中间是怎样的一个转换过程,谢谢指点.
      

  2.   

    lz如果要存储25.625可以用文本的方式,不要用二进制Open ("d:\vb.txt") For Input As #1Open "d:\vb.txt" For Output As #1
      

  3.   

    LZ:你存进的是一个Double数据类型的数据,它为8字节长度.
    具体如何返回原数据可参阅:VB的浮点数处理
      

  4.   

       Dim dou as double
        Open "d:\binary.bin" For Binary As #1     
        Get #1, , dou 
        Close #1 
    or
       Dim b() As Byte ,dou as double
        Open "d:\binary.bin" For Binary As #1 
        ReDim b(LOF(1) - 1) As Byte 
        Get #1, , b 
        Close #1 
    CopyMemory dou,b(0),8
      

  5.   

    Option Explicit
        Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Form_Load()
        Text1 = ""
        Text2 = ""
        Text3 = ""
    End SubPrivate Sub Command1_Click() '10进制转2进制Byte
        Dim i As Integer
        Dim hexData As String
        Dim a As Double
        Dim Buffer(7) As Byte
        a = Val(Text1)
        CopyMemory Buffer(0), a, 8
        For i = 0 To 7
            If Len(Hex(Buffer(i))) = 1 Then
                hexData = "0" & Hex(Buffer(i)) + hexData
            Else
                hexData = Hex(Buffer(i)) + hexData
            End If
        Next
        Text2 = hexData
    End SubPrivate Sub Command2_Click() '2进制Byte转10进制
        Dim sinStr As String
        Dim sinSj As Double
        Dim bytes(7) As Byte
        Dim i As Integer
        sinStr = Text2
        For i = 1 To Len(Text2) Step 2
            bytes((15 - i) / 2) = Val("&H" & Mid(sinStr, i, 2))
        Next
        CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(bytes(0)), 8
        Text3 = sinSj
    End Sub