14.2.16 Binary I/O

Last-modified: 2025-03-23 (日) 19:25:50

14.2.16 バイナリI/O

fread Octave は、同じ名前の標準 C 関数を模倣した関数とを使用してバイナリ データを読み書きできますfwrite。これらの関数は、データの読み取り時に整数データのバイト順序を自動的に入れ替え、サポートされている浮動小数点形式間で変換できます。

: val = fread (fid)

: val = fread (fid, size)

: val = fread (fid, size, precision)

: val = fread (fid, size, precision, skip)

: val = fread (fid, size, precision, skip, arch)

: [val, count] = fread (…)

ファイル記述子fidで指定されたファイルからバイナリ データを読み取ります。

オプション引数sizeは、読み取るデータの量を指定します。

Inf
可能な限り読み取り、列ベクトルを返します。

nr
最大nr個の要素を読み取り、列ベクトルを返します。

[nr, Inf]
可能な限り読み取り、nr行の行列を返します。読み取られた要素の数がnrの正確な倍数でない場合は、最後の列にゼロが埋め込まれます。

[nr, nc]
要素まで読み取り、 nr行の行列を返します 。読み取られた要素数がnrの正確な倍数でない場合は、最後の列にゼロが埋め込まれます。 nr * nc

サイズが省略された場合は、 の値Infが想定されます。

オプション引数の精度は、読み取るデータのタイプを指定する文字列であり、次のいずれかになります。

"uint8"(デフォルト)
8 ビットの符号なし整数。

"int8"
"integer*1"
8 ビットの符号付き整数。

"uint16"
"ushort"
"unsigned short"
16 ビットの符号なし整数。

"int16"
"integer*2"
"short"
16 ビットの符号付き整数。

"uint"
"uint32"
"unsigned int"
"ulong"
"unsigned long"
32 ビットの符号なし整数。

"int"
"int32"
"integer*4"
"long"
32 ビットの符号付き整数。

"uint64"
64 ビットの符号なし整数。

"int64"
"integer*8"
64 ビットの符号付き整数。

"single"
"float"
"float32"
"real*4"
32 ビット浮動小数点数。

"double"
"float64"
"real*8"
64 ビット浮動小数点数。

"char"
"char*1"
8 ビットの単一文字。

"uchar"
"unsigned char"
8 ビットの符号なし文字。

"schar"
"signed char"
8 ビットの符号付き文字。

デフォルトの精度は です"uint8"。

精度引数には、オプションで繰り返し回数を指定することもできます。たとえば、'32*シングル' はfread、32 個の単精度浮動小数点数のブロックを読み取ります。ブロックでの読み取りは、skip引数と組み合わせて使用​​すると便利です。

精度引数は型変換も指定できます。たとえば、'int16=>int32' はfread16 ビット整数値を読み取り、32 ビット整数値の配列を返します。デフォルトでは、fread倍精度配列を返します。特別な形式 '*タイプ' は ' の省略形ですタイプ=>タイプ'。

変換回数と繰り返し回数は組み合わせることもできます。たとえば、次の指定は32*シングル=>シングル' は、fread単精度浮動小数点値のブロックを読み取り、倍精度値のデフォルトの配列ではなく、単精度値の配列を返します。

オプションの引数skip は、各要素 (または要素のブロック) を読み取った後にスキップするバイト数を指定します。指定しない場合は、値 0 が想定されます。最後のブロックの読み取りが完了していない場合、最後の skip は省略されます。たとえば、

fread (f, 10, "3*シングル=>シングル", 8)
最後の読み取りは 3 つの値の完全なブロックではないため、最後の 8 バイトのスキップは省略されます。

オプション引数archは、ファイルのデータ形式を指定する文字列です。有効な値は次のとおりです。

"native"または"n"
現在のマシンのフォーマット。

"ieee-be"または"b"
IEEE ビッグエンディアン。

"ieee-le"または"l"
IEEE リトルエンディアン。

archが指定されていない場合はfopen、ファイル記述子を作成した の 呼び出しで使用された値が使用されます。それ以外の場合は、 で指定された値freadが の値を上書きしfopen、データ形式を決定します。

出力引数valには、ファイルから読み取られたデータが含まれます。

オプションの戻り値count には、読み取られた要素の数が含まれます。

See also: fwrite, fgets, fgetl, fscanf, fopen.

: count = fwrite (fid, data)

: count = fwrite (fid, data, precision)

: count = fwrite (fid, data, precision, skip)

: count = fwrite (fid, data, precision, skip, arch)

ファイル記述子fidで指定されたファイルにバイナリ形式でデータを書き込みます 。

引数データは、ファイルに書き込まれる値のマトリックスです。値は列優先の順序で抽出されます。

残りの引数precision、skip、およびarch はオプションであり、 で説明されているように解釈されますfread。

出力カウントは、正常に書き込まれたデータ項目の数です。

プログラミング ノート:データfwrite内の値が 大きすぎて指定された精度に収まらない 場合、の動作は未定義になります。

See also: fread, fputs, fprintf, fopen.