私は現在、次のようにさまざまな形式仕様タイプを使用して、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);
これは非常に初歩的であり、私がやろうとしていることを達成するための非常に野蛮な方法であることを認識しています。言うまでもなく、何百もの異なる分野でそれを行うことはできません。フィールドに対応するバイトのチャンクでファイルをスキャンし、フォーマットの種類を自動的に判断して読み取り、フォーマットに基づいて保存できるかどうかを知りたいです。基本的には、正しく、よりエレガントな方法です。