二进制文件读取问题

allen_00 2015-03-06 04:52:24
下面是读取二进制文件时存储的结构体

Public Type netBaseParamStructure 
bytIP(0 To 1, 0 To 3) As Byte '0 To 1:A网口和B网口,0 To 3:每个IP地址占用共4个字节
bytMask(0 To 1, 0 To 3) As Byte '地址掩码
bytGateWay(0 To 1, 0 To 3) As Byte '网关信息
End Type
Public NetBaseParam As netBaseParamStructure


通过以下代码写入到结构体中
Fileno = FreeFile
Open filename For Binary As #Fileno
Get #Fileno, , NetBaseParam
Close #Fileno

则通过filename文件得到A网口的ip地址为bytIP(0,0)~bytIP(0,3) 比如192 168 0 1
得到B网口的ip地址为bytIP(1,0)~bytIP(1,3) 比如192 168 0 2

但是为什么filename文件里面的二进制(换成10进制看)是 192 192 168 168 0 0 1 2这样的方式存储的 ???
不应该是192 168 0 1 192 168 0 2 这样存储吗??为什么会交叉呢?难道是先读读入bytIP(0,0),再读入bytIP(1,0)?不是应该先把bytIP(0,0)~bytIP(0,3)读完吗
...全文
215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen_00 2015-03-09
  • 打赏
  • 举报
回复
引用 2 楼 bcrun 的回复:
这样如何

Public Type netBaseParamStructure 
    bytIP(0 To 3, 0 To 1) As Byte                 '0 To 3:每个IP地址占用共4个字节,0 To 1:A网口和B网口
    bytMask(0 To 3, 0 To 1) As Byte           '地址掩码
    bytGateWay(0 To 3, 0 To 1) As Byte     '网关信息
End Type
不错 这样确实能达到目的,因为我现在是要先把二进制文件内容存入到字符数组里面发现数据时错位的,但是还是没弄懂直接存结构体的时候出现错位的原理
allen_00 2015-03-09
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
尼斯怎么保存的?
  NetBaseParam.bytIP(0, 0) = 192 'A网口
        NetBaseParam.bytIP(0, 1) = 168
        NetBaseParam.bytIP(0, 2) =0
        NetBaseParam.bytIP(0, 3) = 2
  NetBaseParam.bytIP(1, 0) = 192      ‘B网口
        NetBaseParam.bytIP(1, 1) =168
        NetBaseParam.bytIP(1, 2) = 0
        NetBaseParam.bytIP(1, 3) =3
..............
Fileno = FreeFile
    Open filename For Binary As #Fileno
    Put #Fileno, , NetBaseParam
    Close #Fileno
为什么存到.dat文件里面的顺序是192 192 168 168 0 0 2 3????
allen_00 2015-03-09
  • 打赏
  • 举报
回复
感谢各位 搭过来了
allen_00 2015-03-09
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
行列倒置了。 bytIP(0 To 3, 0 To 1) As Byte 存储顺序: 192 168 0 1 192 168 0 2 bytIP(0 To 1, 0 To 3) As Byte 存储顺序: 192 192 168 168 0 0 1 2
如果二进制文件的存储内容是 192 192 168 168 0 0 2 3 那么 用Get #Fileno, , NetBaseParam 读取出来的 bytIP(0,0)~bytIP(0,3)为什么是192 168 0 2??
of123 2015-03-09
  • 打赏
  • 举报
回复
行列倒置了。 bytIP(0 To 3, 0 To 1) As Byte 存储顺序: 192 168 0 1 192 168 0 2 bytIP(0 To 1, 0 To 3) As Byte 存储顺序: 192 192 168 168 0 0 1 2
bcrun 2015-03-07
  • 打赏
  • 举报
回复
这样如何

Public Type netBaseParamStructure 
    bytIP(0 To 3, 0 To 1) As Byte                 '0 To 3:每个IP地址占用共4个字节,0 To 1:A网口和B网口
    bytMask(0 To 3, 0 To 1) As Byte           '地址掩码
    bytGateWay(0 To 3, 0 To 1) As Byte     '网关信息
End Type
worldy 2015-03-07
  • 打赏
  • 举报
回复
尼斯怎么保存的?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧