3.1 Встроенные типы данных
Стандартные встроенные типы данных — это вещественные и комплексные скаляры и матрицы, диапазоны, символьные строки, тип структуры данных и ячейные массивы. В будущих версиях могут быть добавлены дополнительные встроенные типы данных. Если вам нужен специализированный тип данных, который в настоящее время не предоставляется как встроенный тип, рекомендуется написать свой собственный тип данных и предоставить его для распространения в будущей версии Octave.
Тип данных переменной можно определить и изменить с помощью следующих функций.
- classname = class (obj)
- class (s, id)
- class (s, id, p, …)
-
Возвращает тип объекта obj или создает тип с полями из структуры s и именем (строкой) id.
Дополнительные аргументы задают список родительских типов, от которых происходит новый тип.
- isa (obj, classname)
-
Возвращает true, если obj является объектом типа classname.
classname также может быть одной из следующих категорий типов:
"float"-
Значение с плавающей точкой, включающее типы
"double"и"single". "integer"-
Целочисленное значение, включающее типы (u)int8, (u)int16, (u)int32, (u)int64.
"numeric"Числовое значение, включающее либо значение с плавающей точкой, либо целое число.
Если classname является ячейным массивом строк, возвращается логический массив того же размера, содержащий true для каждого типа, к которому принадлежит obj.
- cast (val, "type")
-
Преобразует val к типу данных type.
И val, и type обычно являются одним из следующих встроенных типов:
"double" "single" "logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Значение val может быть изменено, чтобы поместиться в диапазон нового типа.
Примеры:
cast (-5, "uint8") ⇒ 0 cast (300, "int8") ⇒ 127
Примечание для программистов: эта функция полагается на то, что объект val имеет метод преобразования с именем type. Пользовательские классы могут реализовать только подмножество полного списка типов, показанного выше. В этом случае может потребоваться вызвать 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, "class")
-
Возвращает новый массив y, полученный в результате интерпретации данных x в памяти как данных числового типа class.
Тип x и class должны быть одним из встроенных числовых типов:
"logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64" "double" "single" "double complex" "single complex"
две последние используются только с class; они указывают, что запрашивается комплексное значение. Комплексные массивы хранятся в памяти как последовательные пары вещественных чисел. Размеры целочисленных типов задаются их разрядностью. Логические и символьные типы обычно имеют ширину один байт; однако это не гарантируется C++ . Если ваша система соответствует стандарту IEEE, типы single и double будут иметь ширину 4 и 8 байт соответственно.
"logical"не разрешено для class.Если входной массив — строка, то возвращаемый результат — строка, в противном случае — столбец.
Если длина в битах x не делится на длину в битах class, возникает ошибка.
Пример использования 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, class)
-
Возвращает новый массив y в результате интерпретации логического массива x как последовательности битов для данных числового типа class.
class должен быть одним из встроенных числовых типов:
"double" "single" "double complex" "single complex" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Число элементов x должно делиться на разрядность class. Если это не так, избыточные биты отбрасываются. Биты идут в порядке возрастания значащих разрядов, т.е.
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/v5.2.0/Built_002din-Data-Types.html