我有一个BIN格式的数据,如下:
00000010H: 01 00 74 01 E2 FF ; ??....?D...?
我想问怎么样可以把01 00 74 01 E2 FF  提取到GRID中来,并且变成如下
0001 0174 FFE2
盼各位大侠赐教

解决方案 »

  1.   

    Private Sub Command1_Click()
    Dim s, a, t() As String
    s = "01 00 74 01 E2 FF"
    a = Split(s)
    ReDim t(UBound(a) \ 2)
    For i = 0 To UBound(t)
    t(i) = a(i * 2 + 1) & a(i * 2)
    Next
    MsgBox Join(t, vbTab)
    End Sub
      

  2.   

    楼上的可能理解有误,不但是这一行内容,是个BIN格式的文件,我举例了一行
    比如说文件为D:\TEMP\123.BIN这个文件,文件中有N个这样的行,怎么提取呢
      

  3.   

    还有就是01 00 74 01 E2 FF 中,每两组16进制数据为一个数组,比如01 00,前面的01为低位,后面的00为高位,我想把这个数放到GRID中,变成0001 0174 FFE2
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim hFile As Integer, iData As Integer
        
        hFile = FreeFile()
        Open "C:\Temp\a.csv" For Binary Access Read As #hFile
        While Not EOF(hFile)
            Get #hFile, , iData
            Debug.Print Right$("000" & Hex(iData), 4) '自己转换成 Grid 的输出
        Wend
        Close #hFile
    End Sub
      

  5.   

    楼上所说的.CSV格式的文件和.BIN的文件一样的吗?
    就按照楼上的编码就可以了吗?
    谢谢!\
      

  6.   

    只是随便哪个文件用二进制打开,你就用自己的 BIN 文件替代就可以了。
      

  7.   


    4 楼误解了。这应该是二进制文件在某种读写软件中的视图。这样:Dim intTmp(2) As IntegerOpen "D:\TEMP\123.BIN" For Binary As #1
    Get #1, , intTmp
    Close #1Get #1, , intTmp 就得到一行(3 个整数)。如果你希望读取多行,循环这句就可以了:Open "D:\TEMP\123.BIN" For Binary As #1
    Do Until EOF(1)
        Get #1, , intTmp
        '放到网格中去
         strTmp = ""
         For i = 0 To 2
            strTmp = strTmp & Righ("000" & Hex(intTmp(i)), 4)
            If i < 2 Then strTmp = strTmp & vbTab
        Next i
        MSFlexGrig1.AddItem strTmp
    Loop
    Close #1