Spec-Zone.ru › Octave 7

14.2.16 Двоичное ввод/вывод

Octave может читать и записывать двоичные данные с помощью функций fread и fwrite, которые смоделированы по стандартным C-функциям с такими же именами. Они могут автоматически менять порядок байтов для целочисленных данных и преобразовывать между поддерживаемыми форматами чисел с плавающей точкой при чтении данных.

: 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 * nc элементов, возвращая матрицу с nr строками. Если количество считанных элементов не является точным кратным nr, последний столбец заполняется нулями.

Если size опущено, используется значение Inf.

Необязательный аргумент precision — строка, определяющая тип считываемых данных и может быть одним из:

"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-битный знаковый символ.

Значение по умолчанию для precision — "uint8".

Аргумент precision также может указывать необязательный счётчик повторений. Например, «32*single» заставляет fread считывать блок из 32 чисел с плавающей точкой одинарной точности. Чтение блоками полезно в сочетании с аргументом skip.

Аргумент precision также может указывать преобразование типа. Например, «int16=>int32» заставляет fread считывать значения 16-битных целых чисел и возвращать массив 32-битных целых чисел. По умолчанию fread возвращает массив двойной точности. Специальная форма «*TYPE» — это сокращение для «TYPE=>TYPE».

Преобразование и счётчики повторений могут быть объединены. Например, спецификация «32*single=>single» заставляет fread считывать блоки чисел с плавающей точкой одинарной точности и возвращать массив чисел одинарной точности вместо массива чисел двойной точности по умолчанию.

Необязательный аргумент skip определяет количество байтов, пропускаемых после считывания каждого элемента (или блока элементов). Если он не указан, используется значение 0. Если последний считанный блок не завершён, последний skip пропускается. Например,

fread (f, 10, "3*single=>single", 8)

пропустит последний 8-байтовый skip, потому что последнее чтение не будет полным блоком из 3 значений.

Необязательный аргумент arch — строка, определяющая формат данных файла. Допустимые значения:

"native" или "n"

Формат текущей машины.

"ieee-be" или "b"

IEEE big endian.

"ieee-le" или "l"

IEEE little endian.

Если arch не задан, используется значение, использованное при вызове fopen, который создал дескриптор файла. В противном случае, значение, заданное с помощью fread, переопределяет значение fopen и определяет формат данных.

Выходной аргумент val содержит считанные из файла данные.

Необязательное возвращаемое значение count содержит количество считанных элементов.

См. также: fwrite, fgets, fgetl, fscanf, fopen.

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

Запись данных в двоичном формате в файл, указанный дескриптором файла fid, возвращая количество успешно записанных значений count в файл.

Аргумент data — матрица значений, которые будут записаны в файл. Значения извлекаются в порядке следования столбцов.

Остальные аргументы precision, skip и arch необязательны и интерпретируются так же, как описано для fread.

Поведение fwrite не определено, если значения в data слишком велики для указанной точности.

См. также: fread, fputs, fprintf, fopen.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v7.2.0/Binary-I_002fO.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API