считывает байт или слово в заданном двоичном формате и преобразует в число удвоенной точности
считывает байт или слово в заданном двоичном формате и возвращает целочисленное значение типа int
x = mget([n, type, fd]) x = mgeti([n, type, fd])
положительный скаляр: количество считываемых данных.
скаляр: параметр fd
, возращённый функцией mopen
. Для последнего открытого файла ставится -1. Значение по умолчанию -1.
строка: двоичный формат, используемый для записи всех элементов
x
.
вектор целых чисел или чисел с плавающей запятой.
Функция mget
считывает данные со входа, определённого параметром потока fd
и возвращает вектор данных с плавающей запятой.
Функция mgeti
считывает данные со входа, определённого параметром потока fd
и возвращает вектор целочисленных данных.
Данные считываются в положении, на которое в данный момент указывает указатель файла и передвигает индикатор далее соответствующим образом.
Параметр type
является указателем преобразования, который может быть установлен в любой из следующих символов-флагов (со значением по умолчанию "l"
):
![]() | В Windows, поведение по умолчанию состоит в пропуске байта 13 ( 0x0D ).
Функцию mopen следует вызывать с опцией
'b' , например, fd1 = mopen(file1,'rb') , так что все байты без исключения будут прочитаны. |
Тип данных:
удвоенная точность, double
плавающая запятая, float
длинное, long long
целочисленное, int (long int)
короткое, short
символ, character
Необязательный флаг:
беззнаковый (в сочетании с одним из вышеперечисленных типов)
прямой порядок байтов (в сочетании с одним из вышеперечисленных типов)
обратный порядок байтов (в сочетании с одним из вышеперечисленных типов)
Чтение байтов автоматически переключается при необходимости (с помощью проверки статуса little=endian
).
Такое поведение переключения можно подавить, если добавить флаг в функцию mopen
.
Форматы "l"
, "d"
и
"f"
корректны только с функцией
mget
.
file1 = fullfile(TMPDIR,'test1.bin'); file2 = fullfile(TMPDIR,'test2.bin'); fd1=mopen(file1,'wb'); fd2=mopen(file2,'wb'); mput(1996,'ull',fd1); mput(1996,'ull',fd2); mclose(fd1); mclose(fd2); fd1=mopen(file1,'rb'); if 1996<>mget(1,'ull',fd1) write(%io(2),'Bug'); end fd2=mopen(file2,'rb'); if 1996<>mget(1,'ull',fd2) write(%io(2),'Bug'); end mclose(fd1); mclose(fd2); | ![]() | ![]() |