[算表] vba讀取.dat檔問題

作者: s52222b (陳豬靜)   2020-05-13 19:36:49
軟體:excel
版本:2010
Dear all大神們:
求解使用vba將檔案轉檔成16進位,結果與轉檔器不同
概念如下用vba open & input讀取binary file
再將個文字轉檔ASCII碼後再轉16進位
vba file以及欲轉的檔案如下
第00000030h 結果跟轉檔器結果不同,如下圖,但找不出原因
求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
檔案及程式碼如下1.為.dat檔2.為excel file3.為對照圖
1.
https://reurl.cc/rxEq2x
2.
https://reurl.cc/5lKx96
3.
https://imgur.com/a/J8eMBVw
求解!!!!!!!!
Sub TEST()
Application.ScreenUpdating = False
Dim ss As String
Open "K:\S24200\test.dat" For Binary As #1
Range("a1:b1048576").ClearContents
r = 1
Do While myloc < LOF(1)
'Do While Not EOF(1)
Line Input #1, s
Debug.Print "s=" & Len(s)
If s = "" Then
Range("b" & r) = Range("b" & r) & "00"
Else
For c = 1 To Len(s)
aa = Mid(s, c, 1)
aa = Asc(aa)
bb = WorksheetFunction.Dec2Hex(aa)
If Len(bb) Mod 2 = 1 Then
bb = WorksheetFunction.Dec2Hex(aa, Len(bb) + 1)
Range("b" & r) = Range("b" & r) & bb
Else
Range("b" & r) = Range("b" & r) & bb
End If
Next
End If
'
Do While Len(Range("b" & r)) > 32
Range("b" & r + 1) = Right(Range("b" & r), Len(Range("b" & r)) -
32)
Range("b" & r) = Left(Range("b" & r), 32)
r = r + 1
Loop
myloc = Loc(1)
Loop
Close #1
For r = 2 To Range("b1048576").End(xlUp).Row
Range("a" & r) = WorksheetFunction.Dec2Hex(r - 1, 7) & "0h"
Next
End Sub
作者: soyoso (我是耀宗)   2020-05-13 21:49:00
line input改get來做試試,測試是可以https://i.imgur.com/UENcUiO.jpgmicrosoft docs有這方面的說明https://i.imgur.com/IRRox5o.jpg

Links booklink

Contact Us: admin [ a t ] ucptt.com