0

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

在此处输入图像描述

在此处输入图像描述

4

0 回答 0