我现在又一个文件,同时存放有二进制和十进制的数据(每一行前面的10个字节为可见的十进制时间,后面30个字节每三个代表一个数据,共10个。一共有三十行。最开始还有三行十进制人工可见的文字描述),请教大家怎么样可以把这个文件结构不变,整体转变成十进制的可用txt打开人工读取的文件?重谢!

解决方案 »

  1.   

    首先你保存数据时就该有一定的规矩,比如以二进制存储,那么使用Open语句以二进制方式打开文件即可。
      

  2.   

    1、使用二进制即open filename for binary as #filenumber方式一次性读入文件到字节数组中。
    2、使用instrb函数按回车换行进行拆分,获得每一行的字节数组。
    3、对每一行使用leftb、midb等函数拆分字节到未定义长度的字节数组中。
    4、最后使用strconv(字节数组,vbunicode)函数将字节数组转换为可见的字符串。
      

  3.   

    这是我开始写的
    Open #### For Binary As #1
    Open "e:\file.txt" For Output As #2
    Do While Not EOF(1)
    Get #1, , a
    Print #2, a
    Loop
    Close #2
    Close #1
    我开始想可以全部以二进制方式读进来,在输出就可以转换了,但是不行,输出的文件是乱码,请问这是为什么啊
      

  4.   

    '(每一行前面的10个字节为可见的十进制时间,后面30个字节每三个代表一个数据,共10个。一共有三十行。最开始还有三行十进制人工可见的文字描述),
    'line1
    'line2
    'line3
    '2011-11-01b01b02b03b04b05b06b07b08b09b10
    '2011-11-02b01b02b03b04b05b06b07b08b09b10
    '2011-11-03b01b02b03b04b05b06b07b08b09b10
    '2011-11-04b01b02b03b04b05b06b07b08b09b10
    '2011-11-05b01b02b03b04b05b06b07b08b09b10
    '2011-11-06b01b02b03b04b05b06b07b08b09b10
    '2011-11-07b01b02b03b04b05b06b07b08b09b10
    '2011-11-08b01b02b03b04b05b06b07b08b09b10
    '2011-11-09b01b02b03b04b05b06b07b08b09b10
    '2011-11-10b01b02b03b04b05b06b07b08b09b10
    '2011-11-11b01b02b03b04b05b06b07b08b09b10
    '2011-11-12b01b02b03b04b05b06b07b08b09b10
    '2011-11-13b01b02b03b04b05b06b07b08b09b10
    '2011-11-14b01b02b03b04b05b06b07b08b09b10
    '2011-11-15b01b02b03b04b05b06b07b08b09b10
    '2011-11-16b01b02b03b04b05b06b07b08b09b10
    '2011-11-17b01b02b03b04b05b06b07b08b09b10
    '2011-11-18b01b02b03b04b05b06b07b08b09b10
    '2011-11-19b01b02b03b04b05b06b07b08b09b10
    '2011-11-20b01b02b03b04b05b06b07b08b09b10
    '2011-11-21b01b02b03b04b05b06b07b08b09b10
    '2011-11-22b01b02b03b04b05b06b07b08b09b10
    '2011-11-23b01b02b03b04b05b06b07b08b09b10
    '2011-11-24b01b02b03b04b05b06b07b08b09b10
    '2011-11-25b01b02b03b04b05b06b07b08b09b10
    '2011-11-26b01b02b03b04b05b06b07b08b09b10
    '2011-11-27b01b02b03b04b05b06b07b08b09b10
    '2011-11-28b01b02b03b04b05b06b07b08b09b10
    '2011-11-29b01b02b03b04b05b06b07b08b09b10
    '2011-11-30b01b02b03b04b05b06b07b08b09b10
    dim a as string
    dim d as string*10
    dim b(3) as byte
    Open "e:\data.bin" For Binary As #1
    Open "e:\file.txt" For Output As #2
        Line Input #1,a
        print #2,a
        Line Input #1,a
        print #2,a
        Line Input #1,a
        print #2,a
        for i=1 to 30
            Get #1, d
            print #2,d;
            for j=1 to 10
                Get #1,b
                print #2," ";CStr(CLng(b(0))+CLng(b(1))*256&+CLng(b(2))*65536&);
            next j
        next i
    Close #2
    Close #1
      

  5.   

    十进制数据是什么意思?BCD 码?ASCII 码?
    二进制数据又是什么样子?贴一段你的文件的十六进制字符串格式看看(例如用 UltraEdit)。
      

  6.   

    zhao4zhong1:    楼主的文件并非全部 ASCII 码。他已经说了“输出的文件是乱码”。