VB如何生成和读取二进制文件

lingfog 2008-04-11 03:07:05
有两个问题
1.我现在有一个字符串数组a(1000),保存都是十六进制数据。请问如何保存成二进制文件。
2.读取以上保存的文件,在TextBox1中显示为原来的十六进制数据,在TextBox2中显示为以保存的二进制数据。(用于测试保存的二进制文件是否正确)。

请各位帮帮忙,在线等。
...全文
520 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MTCD2008 2010-07-07
  • 打赏
  • 举报
回复
Haha,very good!
aoriqileng 2010-06-07
  • 打赏
  • 举报
回复
k俺看吧
pigeon0411 2009-10-08
  • 打赏
  • 举报
回复
VB如何生成和读取二进制文件
标记
hanaq82 2009-02-05
  • 打赏
  • 举报
回复
收藏起来
lingfog 2008-04-14
  • 打赏
  • 举报
回复
谢谢!
问题解决了,散分。
嗷嗷叫的老马 2008-04-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 lingfog 的帖子:]
有两个问题
1.我现在有一个字符串数组a(1000),保存都是十六进制数据。请问如何保存成二进制文件。
2.读取以上保存的文件,在TextBox1中显示为原来的十六进制数据,在TextBox2中显示为以保存的二进制数据。(用于测试保存的二进制文件是否正确)。

请各位帮帮忙,在线等。
[/Quote]


Private Sub CommandButton1_Click() '二进制写
Dim A(1000) As String, I As Long

For I = 0 To 1000
A(I) = "123"
Next I
Open "d:\123.tt" For Binary As #1
Put 1, , A
Close #1
End Sub

Private Sub CommandButton2_Click() '二进制读,放在数组里面
Dim A(1000) As String

Open "d:\123.tt" For Binary As #2
Get 2, , A
Close #2

Debug.Print A(345)
End Sub

Private Sub CommandButton3_Click() '二进制读,放在字符串缓冲区里面
Dim sBin As String

Open "d:\123.tt" For Binary As #3
sBin = String(LOF(3), Chr(0))
Get 3, , sBin
Close #3
Debug.Print sBin
End Sub


想怎么显示在界面上,那是你自己的事了.
用户 昵称 2008-04-11
  • 打赏
  • 举报
回复
不知这个是否有用

Option Explicit

Private Sub Command1_Click()
binary2ascii "d:\0.jpg", "d:\1.txt"
ascii2binary "d:\1.txt", "d:\1.jpg"
End Sub

Private Function gethex(ByVal c As Byte) As String
Dim s As String
s = Trim(Hex$(c))
If c < 16 Then
s = "0" & s
End If
gethex = s
End Function
Private Function h2s(ByRef h() As Byte, ByVal start As Long, ByVal length As Long) As String
Dim s As String
Dim i As Long
For i = start To start + length - 1
s = s & gethex(h(i)) & " "
Next i
h2s = s
End Function

Private Function binary2ascii(ByVal src As String, ByVal dest As String) As Boolean
Dim len1 As Long
Dim bin() As Byte
len1 = FileLen(src)
ReDim bin(0 To len1 - 1) As Byte
Open src For Binary As #1
Get #1, , bin
Close #1
Dim s As String

Dim i As Long
Open dest For Output As #1
For i = 0 To len1 - 1 Step 16
If len1 - 1 - i > 16 Then
s = h2s(bin, i, 16)
Else
s = h2s(bin, i, len1 - i)
End If
Print #1, s
Next i
Close #1

binary2ascii = True
End Function

Private Function parse(ByVal s As String, ByRef bin() As Byte, ByVal offset As Long) As Long
s = Replace(s, " ", "")
Dim i As Long
Dim l As Long
For i = 1 To Len(s) Step 2
bin(offset + l) = Val("&h" & Mid(s, i, 2))
l = l + 1
Next i
parse = l
End Function
Private Function ascii2binary(ByVal src As String, ByVal dest As String) As Boolean
Dim s As String
Dim len1 As Long
Dim parselen As Long
Dim bin(0 To 15) As Byte
Dim i As Long

Open dest For Binary As #2
Close #2
Kill dest

Open src For Input As #1
Open dest For Binary As #2
Do
Line Input #1, s
len1 = parse(s, bin, 0)
If 16 = len1 Then
Put #2, , bin
Else
For i = 0 To len1 - 1
Put #2, , bin(i)
Next i
End If
Loop While Not EOF(1)
Close #2
Close #1
ascii2binary = True
End Function
东方之珠 2008-04-11
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080407/00/1965f31d-83bc-4006-a1ac-77fe1e5d7e94.html

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧