在vb中怎样从一个二进制文件中取出字节,然后再转换成字符,存进文本文件中?在线等。急!!!
那个二进制文件用文本文件打开,是类似与“醞遚匄,馹”这样的,用Ultraedit打开,可以看到“E1 10 61 F8”,这些英文和数字信息对我很有用,如何取得这些信息存储进文本文件,这样用记事本打开就可以看到“E1 10 61 F8”,?
我找了以前人写的程序
'二进制转换为字符串
Public Function BinaryToString(ByVal BinaryStr As Variant) As String
Dim lnglen As Long
Dim tmpBin As Variant
Dim strC As String
Dim skipflag As Long
Dim i As Long
skipflag = 0
strC = " "
If Not IsNull(BinaryStr) Then
lnglen = LenB(BinaryStr)
For i = 1 To lnglen
If skipflag = 0 Then
tmpBin = MidB(BinaryStr, i, 1)
If AscB(tmpBin) > 127 Then
strC = strC & Chr(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin))
skipflag = 1
Else
strC = strC & Chr(AscB(tmpBin))
End If
Else
skipflag = 0
End If
Next
End If
BinaryToString = strC
End Function
这个函数可行么,它的输入项用数组行么,
比如Dim aryContent() As Byte '用来读取文件的数组,每次读取前要重定义
Dim strWrite As String '要写入的文本内容
strWrite = BinaryToString(aryContent)
[解决办法]
将内容写入文本里面
open <file> for binary as #1
put #1, , aryContent
close #1
————————————————————————————————————
写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。
[解决办法]
读取,就使用 get #1, , aryContent
————————————————————————————————————
写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。
[解决办法]
Option Explicit
Dim a As Byte
Dim aa As String
Dim bb As String
Dim i As Integer
Dim nw As Long
Private Sub cmdOpenFileName_Click()
CommonDialog1.ShowOpen
End Sub
Private Sub cmdOpenSave_Click()
Cls
Text2 = " "
bb = " "
Open CommonDialog1.FileName For Binary As #1
For i = 1 + nw To 512 + nw
nw = Seek(1)
Get #1, i, a
Text1 = a
aa = Right$(Hex(a), 2)
If Len(aa) = 1 Then
aa = "0 " & aa
End If
bb = bb & aa & " "
Text2 = Text2 & aa
Text1 = nw
Next
Close #1
Open "C:\wenben.txt " For Append As #1
Print #1, Text2
Close #1
End Sub
[解决办法]
Private Sub Form_Load()
Dim binTmp() As Byte
Dim Filelen, n As Integer
Open "D:\test.dat " For Binary As #1 ‘文件不要太大就可以了~因为后面是写到Textbox里的
Filelen = LOF(1)
ReDim binTmp(Filelen)
binTmp = Input(Filelen, #1)
Close #1
For n = 0 To Filelen
Text1 = Text1 & Format(Hex(binTmp(n)), "00 ") ’记得添加一个textbox 用format控制格式,我在后面加了个空格~
Next
End Sub
[解决办法]
如果是写入文件就
Private Sub Form_Load()
Dim binTmp() As Byte
Dim Filelen, n As Integer
Open "D:\test.dat " For Binary As #1 '文件不要太大就可以了~因为后面是写到Textbox里的
Filelen = LOF(1)
ReDim binTmp(Filelen)
binTmp = Input(Filelen, #1)
Close #1
Open "D:\testOut.txt " For Binary As #1
For n = 0 To Filelen
VarString$ = Format(Hex(binTmp(n)), "00 ")
Put #1, , VarString$
Next
Close #1
End Sub
[解决办法]
strC = strC & Chr(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin))
你这句的意思是
strC = Strc & 重新转换成字符(取ASC码(取字符))
和没变一样,没有取出字符的ASCII数值
应该写成
strC = strC & HEX(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin))
如果你的其他部分的代码没有问题,那么更改以后你应该能够看到取出来的是你想要的16进制数据了
