3.1 Встроенные типы данных
Стандартные встроенные типы данных — это вещественные и комплексные скаляры и матрицы, диапазоны, символьные строки, тип структуры данных и ячейковые массивы. Дополнительные встроенные типы данных могут быть добавлены в будущих версиях. Если вам нужен специализированный тип данных, который в настоящее время не предоставляется как встроенный тип, рекомендуется написать собственный пользовательский тип данных и внести его для распространения в будущей версии Octave.
Тип данных переменной можно определить и изменить с помощью следующих функций.
- имя_класса = class (объект)
- class (s, id)
- class (s, id, p, …)
Возвращает класс объекта объект или создаёт класс с полями из структуры s и именем (строкой) id.
Дополнительные аргументы указывают список родительских классов, от которых происходит новый класс.
- isa (объект, имя_класса)
Возвращает true, если объект является объектом класса имя_класса.
имя_класса также может быть одной из следующих категорий классов:
"float"Значение с плавающей точкой, включающее классы
"double"и"single"."integer"Целочисленное значение, включающее классы (u)int8, (u)int16, (u)int32, (u)int64.
"numeric"Числовое значение, включающее либо значение с плавающей точкой, либо целочисленное значение.
Если имя_класса — ячейковый массив строк, возвращается логический массив того же размера, содержащий true для каждого класса, к которому принадлежит объект.
- cast (значение, "тип")
Преобразует значение в тип данных тип.
И значение, и тип обычно являются одним из следующих встроенных классов:
"double" "single" "logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Значение значение может быть изменено для соответствия диапазону нового типа.
Примеры:
cast (-5, "uint8") ⇒ 0 cast (300, "int8") ⇒ 127
Примечание по программированию: эта функция полагается на то, что у объекта значение есть метод преобразования с именем тип. Определённые пользователем классы могут реализовывать только подмножество полного списка типов, показанного выше. В этом случае может потребоваться дважды вызвать cast, чтобы достичь желаемого типа. Например, преобразование в double почти всегда реализовано, но преобразование в uint8, возможно, нет. В этом случае следующий код будет работать
cast (cast (user_defined_val, "double"), "uint8")
См. также: typecast, int8, uint8, int16, uint16, int32, uint32, int64, uint64, double, single, logical, char, class, typeinfo.
- y = typecast (x, "класс")
Возвращает новый массив y, полученный путём интерпретации данных x в памяти как данных числового класса класс.
И класс x, и класс должны быть одним из встроенных числовых классов:
"logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64" "double" "single" "double complex" "single complex"
две последних используются только с класс; они указывают, что запрашивается комплексное значение. Комплексные массивы хранятся в памяти как последовательные пары вещественных чисел. Размеры целочисленных типов задаются их разрядами. И логические, и символьные типы обычно занимают по одному байту; однако это не гарантируется C++. Если ваша система соответствует стандарту IEEE, single и double будут занимать 4 байта и 8 байт соответственно.
"logical"не допускается для класс.Если входной параметр — строка-вектор, то значение возврата — строка-вектор, иначе — столбец-вектор.
Если длина в битах x не делится на класс, возникает ошибка.
Пример использования typecast на машине с little-endian
x = uint16 ([1, 65535]); typecast (x, "uint8") ⇒ [ 1, 0, 255, 255]
- swapbytes (x)
Меняет порядок байтов на значениях, преобразуя из little-endian в big-endian и наоборот.
Например:
swapbytes (uint16 (1:4)) ⇒ 256 512 768 1024
- y = bitpack (x, класс)
Возвращает новый массив y, полученный путём интерпретации логического массива x как необработанных битовых шаблонов для данных числового класса класс.
класс должен быть одним из встроенных числовых классов:
"double" "single" "double complex" "single complex" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Количество элементов x должно делиться на длину в битах класс. Если это не так, избыточные биты отбрасываются. Биты поступают в порядке возрастания значимости, т. е.,
x(1)— бит 0,x(2)— бит 1 и т. д.Результат — строка-вектор, если x — строка-вектор, иначе — столбец-вектор.
- y = bitunpack (x)
Возвращает логический массив y, соответствующий необработанным битовым шаблонам x.
x должен принадлежать одному из встроенных числовых классов:
"double" "single" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Результат — строка-вектор, если x — строка-вектор, иначе — столбец-вектор.
| • Числовые объекты |
| • Пропущенные данные |
| • Объекты строк |
| • Объекты структур данных |
| • Объекты ячейковых массивов |
© 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/Built_002din-Data-Types.html