在MATLAB中读取具有各种格式规范的二进制文件

时间:2015-02-21 03:52:31

标签: matlab binary formats reader

我目前正在尝试在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个不同领域做到这一点。我想知道我是否有可能以对应于字段的字节块扫描文件,并能够自动确定格式类型,读取格式并根据格式存储它;基本上,这是正确的,更优雅的方式。

enter image description here

enter image description here

0 个答案:

没有答案