接上个帖子:http://community.csdn.net/Expert/topic/5542/5542328.xml?temp=.7452509重现一下,现在想把转换过来的直接放到字符数组里,也是每行14个字节排列:有一个数据文件,用uedit32打开显示如下:
AA 55 D5 00 10 24 24 24 24 24 24 24 24 10 AA 55 猆?.$$$$$$$.猆
D5 00 10 00 00 01 38 58 02 83 97 67 AA 55 D5 00 ?...8X.儣g猆?
........等等,很多,这里注意的是要整理的是每14个字节提取为一行。我先这样做:
Dim bytA() As Byte
Dim lngLen As Long
Open "c:\Data.txt" For Binary As #1
lngLen = LOF(1)
ReDim bytA(lngLen - 1) As Byte
Get #1, 1, bytA
Close #1
读取后,全部放到 bytA 数组中,数组大小根据Data.txt字节大小自动分配。我要求帮助的是,怎样从 bytA 数组中每提取14个字节为一行,然后保存到一个数组中去,在提取的同时,要把每个字节转16进制的Ascii,即把上面在UE中显示的整理成下列这样:
AA 55 D5 00 10 24 24 24 24 24 24 24 24 10
AA 55 D5 00 10 00 00 01 38 58 02 83 97 67
AA 55 D5 00 10 00 00 01 31 12 34 56 78 28
AA 55 D5 00 10 00 02 00 00 00 00 00 00 12
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 07 05 18 13 29 58 08 86 E6
AA 55 D5 00 10 00 00 00 00 00 00 00 03 13
AA 55 D5 00 10 00 00 00 00 00 00 00 20 30
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10这样方便程序提取,放到文本还有读出,麻烦,谢谢了。
此另开帖子,表示感谢 暴风雨 老大。
AA 55 D5 00 10 24 24 24 24 24 24 24 24 10 AA 55 猆?.$$$$$$$.猆
D5 00 10 00 00 01 38 58 02 83 97 67 AA 55 D5 00 ?...8X.儣g猆?
........等等,很多,这里注意的是要整理的是每14个字节提取为一行。我先这样做:
Dim bytA() As Byte
Dim lngLen As Long
Open "c:\Data.txt" For Binary As #1
lngLen = LOF(1)
ReDim bytA(lngLen - 1) As Byte
Get #1, 1, bytA
Close #1
读取后,全部放到 bytA 数组中,数组大小根据Data.txt字节大小自动分配。我要求帮助的是,怎样从 bytA 数组中每提取14个字节为一行,然后保存到一个数组中去,在提取的同时,要把每个字节转16进制的Ascii,即把上面在UE中显示的整理成下列这样:
AA 55 D5 00 10 24 24 24 24 24 24 24 24 10
AA 55 D5 00 10 00 00 01 38 58 02 83 97 67
AA 55 D5 00 10 00 00 01 31 12 34 56 78 28
AA 55 D5 00 10 00 02 00 00 00 00 00 00 12
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 07 05 18 13 29 58 08 86 E6
AA 55 D5 00 10 00 00 00 00 00 00 00 03 13
AA 55 D5 00 10 00 00 00 00 00 00 00 20 30
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10这样方便程序提取,放到文本还有读出,麻烦,谢谢了。
此另开帖子,表示感谢 暴风雨 老大。
按这样排列:
AA 55 D5 00 10 24 24 24 24 24 24 24 24 10
AA 55 D5 00 10 00 00 01 38 58 02 83 97 67
AA 55 D5 00 10 00 00 01 31 12 34 56 78 28
AA 55 D5 00 10 00 02 00 00 00 00 00 00 12
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 07 05 18 13 29 58 08 86 E6
AA 55 D5 00 10 00 00 00 00 00 00 00 03 13
AA 55 D5 00 10 00 00 00 00 00 00 00 20 30
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
AA 55 D5 00 10 00 00 00 00 00 00 00 00 10
For i = 0 To lngLen
If i <> 0 Then tStr = tStr & IIf(i Mod 14 = 0, vbCrLf, "")
tStr = tStr & Right("0" & Hex(bytA(i)), 2)
Next i
Text2.Text = tStr
Dim BytB() As String
BytB() = Split(tStr, vbCrLf)其余的自己处理吧,呵呵
BytB() = Split(tStr, vbCrLf)
Dim bytA() As Byte, bytB() As Byte
Dim s As String
Dim lngLen As Long
Dim mFile1 As String
mFile1 = "d:\nn\DrvStudy.exe"
lngLen = FileLen(mFile1)
ReDim bytA(lngLen - 1)
Dim k As Long, m As Long
k = lngLen \ 14
m = lngLen Mod 14
k = k * 43 + m * 3
ReDim bytB(k - 1)
Open mFile1 For Binary As #1
Get #1, , bytA
Close #1
Dim i As Long, tmps() As Byte, Intm As Long, Ints As Long
For i = 0 To UBound(bytA)
Intm = bytA(i) Mod 16 '低位
If Intm >= 10 Then
Intm = Intm + 55
Else
Intm = Intm + 48
End If
Ints = bytA(i) \ 16 '高位
If Ints >= 10 Then
Ints = Ints + 55
Else
Ints = Ints + 48
End If
k = i \ 14
k = k * 43
m = i Mod 14
If i Mod 14 = 13 Then
bytB(k + m * 3) = Ints
bytB(k + m * 3 + 1) = Intm
bytB(k + m * 3 + 2) = 13
bytB(k + m * 3 + 3) = 10
Else
bytB(k + m * 3) = Ints
bytB(k + m * 3 + 1) = Intm
bytB(k + m * 3 + 2) = 32
End If
Next
Open "d:\nn\test2.txt" For Binary As #1
Put #1, , bytB
Close #1
Erase bytB
Erase bytA
MsgBox "完成"
End Sub
再问一个问题,怎么指定开始循环读取的行,然后读几行呢?
比如以下很多输入,我要从地 17行开始循环读取,直读取2行,这么怎么做啊?
AA55D50010242424242424242410
AA55D50010000001385802839767
AA55D50010000001311234567828
AA55D50010000200000000000012
AA55D50010000000000000000010
AA55D500100705230851250193DF
AA55D50010000000000000000111
AA55D50010000000000000000212
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D50010000000000000000010
AA55D500100705230851250193DF
AA55D50010000000000000000010
AA55D500010705230851250193CE
AA55D500010705230852360193DE
AA55D50001FFFFFFFFFFFFFFFF01
AA55D500800000000080FFFFFFFF