怎么把二进制文件转化成普通字符串,就是普通人都能看懂的文字,然后写到TEXT里

解决方案 »

  1.   

    下列代码基于由16进制数据转换为二进制BYTE数组,最后转换为Unicode文本,供参考.
    Option Explicit
        Dim yTemp() As Byte
        Dim strData As String
        Dim sTemp As String
        Dim i As Integer
        
    Private Sub zhuanhuan()
        ReDim yTemp(Len(strData) \ 2)
        For i = 1 To Len(strData) - 4 Step 2
            yTemp((i - 1) \ 2) = Val("&H" & Mid(strData, i, 2)) '获取2进制数组
        Next
        sTemp = StrConv(yTemp, vbUnicode) '转换为Unicode码
        Text1 = sTemp
    End SubPrivate Sub Command1_Click()
         zhuanhuan
    End SubPrivate Sub Form_Load()
        strData = "B8F8B5E7D7D3B9A4B3CCCAA6B5C4D6D2B8E6A3A1A3A1A3A15B315DBAC3BAC3B9E6BBAED7D4BCBAB5C4C2B7A3ACB2BBD2AAB8FAD7C5B8D0BEF5D7DFA3A1B8F9BEDDB8F6C8CBB5C4C0EDCFEBBEF6B2DFB0B2C5C5A3ACBEF8B4F3B2BFB7D6C8CBB2A2B2BBD6B8CDFBB3C9CEAACAB2C3B4D4BACABFBBF2BDCCCADAA3ACB6F8CAC7CFA3CDFBBBEEB5C3D7CCC8F3D2BBD0A9A3ACCBACD2BBD0A9A1A3C4C7C3B4A3ACBECDD0E8D2AAC9F7D6D8B0B2C5C5D7D4BCBAB5C4B9ECBCA3A1A3B4D3C4C4B8F6D0D0D2B5C8EBCAD6A3ACD6F0BDB8F8B5E7D7D3B9A4B3CCCAA6B5C4D6D2B8E6A3A1A3A1A3A15B315DBAC3BAC3B9E6BBAED7D4BCBAB5C4C2B7A3ACB2BBD2AAB8FAD7C5B8D0BEF5D7DFA3A1B8F9BEDDB8F6C8CBB5C4C0EDCFEBBEF6B2DFB0B2C5C5A3ACBEF8B4F3B2BFB7D6C8CBB2A2B2BBD6B8CDFBB3C9CEAACAB2C3B4D4BACABFBBF2BDCCCADAA3ACB6F8CAC7CFA3CDFBBBEEB5C3D7CCC8F3D2BBD0A9A3"
        strData = strData & "ACCBACD2BBD0A9A1A3C4C7C3B4A3ACBECDD0E8D2AAC9F7D6D8B0B2C5C5D7D4BCBAB5C4B9ECBCA3A1A3B4D3C4C4B8F6D0D0D2B5C8EBCAD6A3ACD6F0BDA5B6D4B8C3D0D0D2B5C9EEC8EBC1CBBDE2A3ACB2BBD2AAC6B5B7B1CCF8B2DBA3ACCCD8B1F0CAC7B2BBD2AACEAAC1CBD2BBB5E3B9A4D7CAB6F8D7AAD2C6D5F3B5D8A3ACB4D3B3A4D4B6BFB4A3ACD5E2B5E3C7AEB8F9B1BEB2BBCBE3CAB2C3B4A3ACB5B1C4E3B6D4D2BBB8F6D0D0D2B5D3D0C4C7C3B4BCB8C4EAB5C4CCE5BBE1A3ACD2D4BAF3C7AEB8F9B1BEB2BBCAC7CECACCE2A1A3C6B5B7B1B5D8B6AFB5B4B2BBCAC7C9CFB2DFA3ACD7EEBAF3C4E3B6D4C4C4B8F6D0D0D2B5B6BCC3BBD3D0C3FECDB8A3ACD3C0D4B6CAC7D0C2CAD6A3A15B325DBFC9D2D4D7F6BCBCCAF5A3ACC7D0B2BBBFC9B3C1E4CFD3DABCBCCAF5A1A3C7A7CDF2B2BBBFC9D2BBC3C5D0C4CBBCD7EAD1D0BCBCCAF5A3A1B8F8D7D4BCBABADCB4F3D1B9C1A6A3ACC8E7B9FB"
        strData = strData & "C4E3B5C4D0C4CBBCC8ABB2BFB7C5D4DAD5E2C9CFC3E6A3ACC4C7C3B4D7A2B6A8C4E3BDABB3C9CEAABFD7D2D2BCBAD2BBC0E0B5C4C8CBCEEFA3A1CACABFC9B6F8D6B9CEAAD6AEA3ACD2F2CEAABCBCCAF5D6BBB2BBB9FDCAC7C4E3BDF1BAF3C7B0CDBEB5C4D6A7D6F9D6AED2BBA3ACB6F8C7D2BBB9B2BBCAC7D7EEB4F3B5C4D6A7D6F9A3ACB3FDB7C7C4E3D6BBD4B8D2E2B5BDC0CFBBB9CAC7B8F6B9A4B3CCCAA6A3A12525"
    End Sub
      

  2.   

    修改代码,下列16进制的来自文本:
    给电子工程师的忠告!!![1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,
    而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不
    要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是
    上策,最后你对哪个行业都没有摸透,永远是新手![2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,
    如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不
    是最大的支柱,除非你只愿意到老还是个工程师!
    Private Sub Form_Load()
        strData = "B8F8B5E7D7D3B9A4B3CCCAA6B5C4D6D2B8E6A3A1A3A1A3A15B315DBAC3BAC3B9E6BBAED7D4BCBAB5C4C2B7A3ACB2BBD2AAB8FAD7C5B8D0BEF5D7DFA3A1B8F9BEDDB8F6C8CBB5C4C0EDCFEBBEF6B2DFB0B2C5C5A3ACBEF8B4F3B2BFB7D6C8CBB2A2B2BBD6B8CDFBB3C9CEAACAB2C3B4D4BACABFBBF2BDCCCADAA3ACB6F8CAC7CF"
        strData = strData & "A3CDFBBBEEB5C3D7CCC8F3D2BBD0A9A3ACCBACD2BBD0A9A1A3C4C7C3B4A3ACBECDD0E8D2AAC9F7D6D8B0B2C5C5D7D4BCBAB5C4B9ECBCA3A1A3B4D3C4C4B8F6D0D0D2B5C8EBCAD6A3ACD6F0BDA5B6D4B8C3D0D0D2B5C9EEC8EBC1CBBDE2A3ACB2BBD2AAC6B5B7B1CCF8B2DBA3ACCCD8B1F0CAC7B2BBD2AACEAAC1CBD2BBB5E3B"
        strData = strData & "9A4D7CAB6F8D7AAD2C6D5F3B5D8A3ACB4D3B3A4D4B6BFB4A3ACD5E2B5E3C7AEB8F9B1BEB2BBCBE3CAB2C3B4A3ACB5B1C4E3B6D4D2BBB8F6D0D0D2B5D3D0C4C7C3B4BCB8C4EAB5C4CCE5BBE1A3ACD2D4BAF3C7AEB8F9B1BEB2BBCAC7CECACCE2A1A3C6B5B7B1B5D8B6AFB5B4B2BBCAC7C9CFB2DFA3ACD7EEBAF3C4E3B6D4C4C4B8F6"
        strData = strData & "D0D0D2B5B6BCC3BBD3D0C3FECDB8A3ACD3C0D4B6CAC7D0C2CAD6A3A15B325DBFC9D2D4D7F6BCBCCAF5A3ACC7D0B2BBBFC9B3C1E4CFD3DABCBCCAF5A1A3C7A7CDF2B2BBBFC9D2BBC3C5D0C4CBBCD7EAD1D0BCBCCAF5A3A1B8F8D7D4BCBABADCB4F3D1B9C1A6A3ACC8E7B9FBC4E3B5C4D0C4CBBCC8ABB2BFB7C5D4DAD5E2C9CFC"
        strData = strData & "3E6A3ACC4C7C3B4D7A2B6A8C4E3BDABB3C9CEAABFD7D2D2BCBAD2BBC0E0B5C4C8CBCEEFA3A1CACABFC9B6F8D6B9CEAAD6AEA3ACD2F2CEAABCBCCAF5D6BBB2BBB9FDCAC7C4E3BDF1BAF3C7B0CDBEB5C4D6A7D6F9D6AED2BBA3ACB6F8C7D2BBB9B2BBCAC7D7EEB4F3B5C4D6A7D6F9A3ACB3FDB7C7C4E3D6BBD4B8D2E2B5BDC0CFB"
        strData = strData & "BB9CAC7B8F6B9A4B3CCCAA6A3A12525"
    End Sub
      

  3.   

    如果是二进制图片,你想读出BYTE数据,这能做到.
    要变为能看懂的文字,那可能是一堆乱码.
      

  4.   

    以下是以二进制方式打开任意文件,在Text1显示16进制字符串.假如是TXT文件,按Command3,则在Text2显示文本:
    Option Explicit
        Dim sj As String
        Dim yTemp() As Byte
        Dim strData As String
        Dim sTemp As String
        Dim i As IntegerPrivate Sub Command1_Click()
        CommonDialog1.CancelError = True
        On Error GoTo ErrHandler
        ' 设置标志
        CommonDialog1.Flags = cdlOFNHideReadOnly
        ' 设置过滤器
        CommonDialog1.Filter = "All Files (*.*)|*.*|"
        ' 指定缺省的过滤器
        'CommonDialog1.FilterIndex = 2
        ' 显示“打开”对话框
        CommonDialog1.ShowOpen
        ' 显示选定文件的名字
        MsgBox CommonDialog1.FileName
        Exit Sub
    ErrHandler:
    ' 用户按了“取消”按钮
    Exit Sub
    End SubPrivate Sub Command2_Click()
        Dim a As Byte
        Dim aa As String
        Dim bb As String
        Dim i As Integer
        Static sec As Long
        Cls
        ' 设置“CancelError”为 True
        On Error GoTo ErrHandler
        Open CommonDialog1.FileName For Binary As #1
        ' 若要以其他方式打开文件,必需先关闭此文件。
        For i = sec + 1 To 512 + sec '0
            Get #1, i, a
                bb = bb & a
                aa = Right$(Hex(a), 2)
                If Len(aa) = 1 Then
                aa = "0" & aa
                End If
            'If i Mod 16 = 0 Then
            '    Print aa
            'Else
            '    Print aa; " ";
            'End If
                sj = sj & aa '& " "
        Next
        sec = Seek(1) - 1
        Text1 = sj
        Close #1
        strData = strData & sj
        Exit Sub
    ErrHandler:
    End Sub
    Private Sub zhuanhuan()
        ReDim yTemp(Len(strData) \ 2)
        For i = 1 To Len(strData) - 4 Step 2
            yTemp((i - 1) \ 2) = Val("&H" & Mid(strData, i, 2))
        Next
        sTemp = StrConv(yTemp, vbUnicode)
        Text2 = sTemp
    End SubPrivate Sub Command3_Click()
         zhuanhuan
    End Sub
      

  5.   

    谢谢zdingyun大哥了!~~那文件里面是一个一个结构体,1字节方式对齐,怎么用VB读出来呢 ????结构体格式:
    class CPeriodItem
    {
    public:
    CTime Time;
    float Open;
    float Close;
    float High;
    float Low;
    float Volume;
    float OpI;
    float   AVPrice;
    float   Scale;
    }; 
      

  6.   

    wjp1015:
    你的代码是VB6的吗?