我目前正在尝试在 MATLAB 中实现具有各种格式规范类型的二进制阅读器,如下所示:
%FIELD %Bytes % VALUE RANGE
---------------------------
field1 %4 Basic Character Set(BCS)-A
field2 %5 BCS-A
field3 %2 BCS-N (positive integer 01 to 99)
field4 %4 BSC-A
field5 %10 BCS-A
field6 %14 BCS-N (integer CCYYMMDDhhmmss)
field7 %80 ECS-A
这只是具有大量数据(高达 1GB)的更大文件的文件头的一小部分。重点是,有几种不同类型的格式规范类型。到目前为止,我所做的是在上述标题子集中读取以下内容:
fid = fopen([fnm '.ntf'],'r');
while ftell(fid)~=119
fseek(fid,0,'bof')
field1 = fread(fid,4,'int8');
fseek(fid,4,'bof')
field2 = fread(fid,5,'char');
fseek(fid,9,'bof')
field3 = fread(fid,2,'int8');
fseek(fid,11,'bof')
field4 = fread(fid,4,'char');
fseek(fid,15,'bof')
field5 = fread(fid,10,'char');
fseek(fid,25,'bof')
field6 = fread(fid,14,'int8');
fseek(fid,39,'bof')
field7 = fread(fid,80,'char');
end
fclose(fid);
我意识到这是完成我想做的事情的非常基本且非常粗暴的方式;更不用说我不能为 100 多个不同的领域做到这一点。我想知道我是否可以按照字段对应的字节块扫描文件,并能够自动确定格式类型,读取它,并根据格式存储它;基本上,正确,更优雅的方式来做到这一点。