3.1内置数据类型

标准的内置数据类型是真实和复杂的标量和矩阵、范围、字符串、数据结构类型和元胞数组。在未来的版本中可能会添加其他内置数据类型。如果您需要一个当前未作为内置类型提供的专用数据类型,我们鼓励您编写自己的用户定义数据类型,并将其贡献给Octave的未来版本。

变量的数据类型可以通过使用以下函数来确定和更改。

 
: classname = class (obj)
: cls = class (s, classname)
: cls = class (s, classname, parent1, …)

返回对象的类obj,或使用structure中的字段创建一个类s和名称(字符串)classname.

附加参数命名了派生新类的父类列表。

详见: typeinfo, isa.

广告
 
: tf = isa (obj, classname)

如果返回trueobj是类中的对象classname.

classname也可以是以下类别之一:

"float"

包含类的浮点值"double""single".

广告
"integer"

整数值,包括类(u)int8、(u)int 16、(u)int 32和(u)int64。

广告
"numeric"

包含浮点值或整数值的数值。

广告

如果classname是字符串的元胞数组,返回相同大小的逻辑数组,其中包含每个类的trueobj属于。

详见: class, typeinfo.

广告
 
: y = cast (x, "type")
: y = cast (x, "like", var)

转换x到数据类型type.

输入x可以是可转换为目标类的类的标量、向量或矩阵(见下文)。

如果变量var在之后指定"like", x被转换为相同的数据类型和稀疏性属性。如果variscomplex,x也会很复杂。

var可能是和type可以命名以下任何一个内置的枚举类:

"double"
"single"
"logical"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

价值x可以被修改以适应新类型的范围。

示例:

cast (-5, "uint8")
   ⇒ 0
cast (300, "int8")
   ⇒ 127

编程注意事项:此函数依赖于对象x具有名为的转换方法type.用户定义的类可以仅实现上面所示的完整类型列表的子集。在这种情况下,为了达到所需的类型,可能需要调用两次强制转换。例如,几乎总是实现到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.

两者都属于xclass必须是已构建的innumeric类之一:

"logical"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"
"double"
"single"
"double complex"
"single complex"

最后两个仅与一起使用class; 它们指示指定复值结果。复数数组作为连续的实数对存储在存储器中。整数类型的大小从其位计数给定。逻辑和字符通常都是一个字节宽;然而,C++并不能保证这一点。如果您的系统符合IEEE标准,则单字节和双字节的宽度分别为4字节和8字节。"logical"不允许用于class.

如果输入是行向量,则返回值是行向量;否则返回值是列向量。

如果的位长度x不能被的整除class,出现错误。

在小端序机器上使用类型转换的一个例子是

x = uint16 ([1, 65535]);
typecast (x, "uint8")
⇒ [   1,   0, 255, 255]

详见: cast, bitpack, bitunpack, swapbytes.

广告
 
: y = swapbytes (x)

交换值的字节顺序,从小端到大端转换,反之亦然。

例如

swapbytes (uint16 (1:4))
⇒   256   512   768  1024

详见: typecast, cast.

广告
 
: 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)isbit 1等。

结果是行向量,如果x是行向量,否则是列向量。

详见: bitunpack, typecast.

广告
 
: y = bitunpack (x)

返回逻辑数组y对应于的原始位模式x.

x必须属于内置数字类之一:

"double"
"single"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

结果是行向量,如果x是一个行向量;否则,它就是列向量。

详见: bitpack, typecast.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2