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 (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 слишком велики для указанного типа данных.
© 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/v6.4.0/Binary-I_002fO.html