如何将文本文件按一定的文件头要求写成二进制文件

cguzh 2012-05-28 09:31:50
我现在需要将一个文本文件,读出指定的文件,如何按一定的文件头的数据格式要求,写成二进制。
比如文本文件为“2012年5月”,文件头要求为 年占2个字节,月份占2个字节等。需要怎么做呢
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgls11 2012-06-02
  • 打赏
  • 举报
回复
VB中定义数值是小括号,不是中括号。其他都是对的。
cguzh 2012-05-29
  • 打赏
  • 举报
回复
可能我没说清楚
比如我的文件内容是这样的
"diamond 2012年我们 2008 05 001 003 3.0 。。。。。。"
我要求按这样的数据格式写成二进制,比如
文件头格式,长度1024个字节。
char ZonName[12]; // diamond 12个字节
char DataName[38];//数据说明(例如 2012年我们)38个字节
unsigned short int year;//2008 两个字节
unsigned short int month;//05 两个字节
。。。。。。
我要用vb写的话,我知道是用put但不清楚是不是我直接写

Type XXX
ZonName as string*12
DataName as string*38
y as Integer
m as Integer
End Type

Dim x As XXX
x.ZonName="XX"
x.DataName="YY"
x.y=2012
x.m=13

open "1.dat" for binary as #1
Put #1,1,x
close #1
但现在的问题是这样的,
我的文件头要求是这样的,给我的是C里面的数据类型
char ZonName[12]; // diamond 131 12个字节
char DataName[38];//数据说明(例如 2008年5月19日)38个字节
char Flag[8]; // 文件标志,"sx"
char Version[8]; // 数据,"1.0"
unsigned short int year;//2008 两个字节
unsigned short int month;//05 两个字节
unsigned short int day;//19 两个字节
unsigned short int hour;//14 两个字节
unsigned short int minute;//31 两个字节
unsigned short int inter ; //两个字节
unsigned short int XNum;//1300 两个字节
unsigned short int YNum;//800 两个字节
unsigned short int ZNum;//20 两个字节
int Count; //四个字节
float SLon; // 四个字节
float SLat; // 四个字节
float CLon;// 四个字节
float CLat;//四个字节
float Xr; // 四个字节
float Yr; //四个字节
float ZG[40];// 160个字节。
char Rsn[20][16]; //20*16字节
float RaLong[20]; // 4*20字节
float RaLat[20]; //4*20字节
float RaAlt[20]; // 4*20字节
unsigned char MoF[20]; //20字节
char[] Reserved; //预留172字节
这前面的我知道怎么定义,
Type Mydata
ZonName As String * 12
DateName As String * 38
Flag As String * 8
Version As String * 8
YY As Integer
MM As Integer
DD As Integer
HH As Integer
Min As Integer
Interval As Integer
Xnum As Integer
Ynum As Integer
Znum As Integer
Counter As Long
Slon As Single
Slat As Single
Clon As Single
Clat As Single
Xr As Single
Yr As Single //这后面的我就不太清楚怎么定义了。
ZG[40] as Single
Rsn[20] AS string*16
.....
End Type
是这样写的嘛,但报错不对!
还有 char[] Reserved; //预留172字节
这预留的172个字节,我赋值时是不是直接付给“ ”呢
谢谢!
threenewbee 2012-05-28
  • 打赏
  • 举报
回复
open file for binary
put 语句放入数据
close
  • 打赏
  • 举报
回复
糗大……
  • 打赏
  • 举报
回复
文本在磁盘的存储本来就是二进制的。。。
所谓二进制是以二进制的方式去读写。。。

7,763

社区成员

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

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