当前位置:编程学习 > VB >>

怎样用vb读取同时存有二进制和十进制的文件,并全部输出为十进制

我现在又一个文件,同时存放有二进制和十进制的数据(每一行前面的10个字节为可见的十进制时间,后面30个字节每易做图一个数据,共10个。一共有三十行。最开始还有三行十进制人工可见的文字描述),请教大家怎么样可以把这个文件结构不变,整体转变成十进制的可用txt打开人工读取的文件?重谢! --------------------编程问答-------------------- 自己先顶下! --------------------编程问答-------------------- 没有高手在吗,关键困难是怎么区分二进制和十进制然后分开读取啊?高手给个代码看下吧 --------------------编程问答-------------------- 首先你保存数据时就该有一定的规矩,比如以二进制存储,那么使用Open语句以二进制方式打开文件即可。 --------------------编程问答-------------------- 数据在计算机中存储全是以二进制形式存储的,到了操作系统,会把读出的数据放到内存里,同样是二进制形式的,但高级语言中,会把这些数据分为数字类型、字符串类型等变量类型来处理。
最小的单位为8个二进制位(一个字节的数据),同时还有如双字节、4字节、8字节、字符串类型等,字符串就是一连串的字节数据以0为结尾的串行数据。
你说说的文件,无论是什么结构,都是基于这种系统中最小单位(字节)所组成的,什么十进制、十六进制只是数学上的说法,表示的只是个数字,在结构上和数据上不会有什么。除非你说的是16进制表示的字符串,那结构上就是字符串类型,否则,无论什么进制,都是个数字而已,只要知道该数字类型的所占字节位,就能够了解到数据类型了。估计你对数据类型还有数据的概念还不是很清楚,如果是这样,你就不要试图用专业的说法来阐述你的问题,因为你用错词会误导别人对你的问题的理解。你还是把你具体要做的事情用简单的说法阐述。 --------------------编程问答-------------------- 1、使用二进制即open filename for binary as #filenumber方式一次性读入文件到字节数组中。
2、使用instrb函数按回车换行进行拆分,获得每一行的字节数组。
3、对每一行使用leftb、midb等函数拆分字节到未定义长度的字节数组中。
4、最后使用strconv(字节数组,vbunicode)函数将字节数组转换为可见的字符串。
--------------------编程问答-------------------- 这是我开始写的
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
我开始想可以全部以二进制方式读进来,在输出就可以转换了,但是不行,输出的文件是乱码,请问这是为什么啊 --------------------编程问答--------------------
'(每一行前面的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

--------------------编程问答-------------------- 十进制数据是什么意思?BCD 码?ASCII 码?
二进制数据又是什么样子?

贴一段你的文件的十六进制字符串格式看看(例如用 UltraEdit)。 --------------------编程问答-------------------- zhao4zhong1:

    楼主的文件并非全部 ASCII 码。他已经说了“输出的文件是乱码”。
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,