晕了.. 继续说 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,中间是怎样的一个转换过程,谢谢指点.
lz如果要存储25.625可以用文本的方式,不要用二进制Open ("d:\vb.txt") For Input As #1Open "d:\vb.txt" For Output As #1
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
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
继续说 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,中间是怎样的一个转换过程,谢谢指点.
具体如何返回原数据可参阅:VB的浮点数处理
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
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