VB 把一个二进制档案里的一组数据提取出来
上图是档案在UE的结构...头64byte是名字..之后是23组4byte的数据PublicTypemon_datanameAsString*64item(22,3)As...
上图是档案在UE的结构...头64byte是名字..之后是 23组4byte的数据
Public Type mon_data
name As String * 64
item(22, 3) As Byte
End Type
数据的结构....
之后我在源文件提取了数据放在Mon中....但把数据一个一个放进新档案时...数据不同了
Open "tmp.tmp" For Binary As #10
--------------------------------------------------------------------
Put #10, , Mon.item
--------------------------------------------------------------------
For z = 0 To 22
For j = 0 To 3
Put #10, , Mon.item(z, j)
Next j
Next z
--------------------------------------------------------------------
close #10
蓝色部分是(Put #10, , Mon.item)...这里数据是正确的
但白色那部分是一个个PUT的....却变成另外的东西....谁可以告诉我是怎回事
因为某几个数据我需要改动再保存...现在都乱了不知怎搞 展开
Public Type mon_data
name As String * 64
item(22, 3) As Byte
End Type
数据的结构....
之后我在源文件提取了数据放在Mon中....但把数据一个一个放进新档案时...数据不同了
Open "tmp.tmp" For Binary As #10
--------------------------------------------------------------------
Put #10, , Mon.item
--------------------------------------------------------------------
For z = 0 To 22
For j = 0 To 3
Put #10, , Mon.item(z, j)
Next j
Next z
--------------------------------------------------------------------
close #10
蓝色部分是(Put #10, , Mon.item)...这里数据是正确的
但白色那部分是一个个PUT的....却变成另外的东西....谁可以告诉我是怎回事
因为某几个数据我需要改动再保存...现在都乱了不知怎搞 展开
1个回答
展开全部
那是因为你把两个循环的顺序搞错了,换成这样就OK了:
For j = 0 To 3
For z = 0 To 22
Put #10, , mon.item(z, j)
Next z
Next j
补充一下:实际上你在定义结构的时候就已经有偏差了,23组4byte的数组,应该声明为
item(3, 22) As Byte
即第1维应该是每组数量(相当于横坐标),第2维则是组数(相当于纵坐标),这样才合乎逻辑,这样的话,你的代码就不用修改也没问题了,而且这样才更合乎习惯。
For j = 0 To 3
For z = 0 To 22
Put #10, , mon.item(z, j)
Next z
Next j
补充一下:实际上你在定义结构的时候就已经有偏差了,23组4byte的数组,应该声明为
item(3, 22) As Byte
即第1维应该是每组数量(相当于横坐标),第2维则是组数(相当于纵坐标),这样才合乎逻辑,这样的话,你的代码就不用修改也没问题了,而且这样才更合乎习惯。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询