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-битный знаковый символ.
По умолчанию используется
"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 содержит количество прочитанных элементов.
- : count = fwrite (fid, data) ¶
- : count = fwrite (fid, data, precision) ¶
- : count = fwrite (fid, data, precision, skip) ¶
- : count = fwrite (fid, data, precision, skip, arch) ¶
-
Записывает данные в двоичном формате в файл, указанный дескриптором файла fid.
Аргумент data — матрица значений, которые должны быть записаны в файл. Значения извлекаются в порядке следования столбцов.
Остальные аргументы precision, skip и arch необязательны и интерпретируются так же, как описано для
fread.Выходной параметр count содержит количество успешно записанных элементов данных.
Примечание к программированию: поведение
fwriteнеопределено, если значения в data слишком велики для указанной точности.
© 1996–2023 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/v8.1.0/Binary-I_002fO.html