主要内容

定型

转换数据类型而不更改底层数据

描述

例子

Y=定型(X类型的位模式X指定的数据类型类型无需更改底层数据。X必须是一个完整的、非复数的数字标量或向量。

例子

全部折叠

将整数转换为具有相同存储大小的无符号整数。

X = int16(-1)
X =int16-1
Y = typecast(X,“uint16”
Y =uint1665535

显示十六进制表示的位模式。转换数据类型定型不会更改基础数据。

格式十六进制X
X =int16飞行符
Y = typecast(X,“uint16”
Y =uint16飞行符

创建一个由8位整数组成的1 × 4向量。

X = int8([77 60 43 26])
X =1x4成行向量77 60 43 26

将使用4字节(32位)存储的4个8位整数转换为同样使用4字节存储的单精度数字。

Y = typecast(X,“单一”
Y =3.5411 e-23

显示十六进制表示的位模式。在十六进制表示法中,一个字节(8位)由两位数字表示。的定型函数在不修改数据的情况下重新排列位模式。

格式十六进制X
X =1x4成行向量4d 3c 2b 1a
Y = typecast(X,“单一”
Y =1 a2b3c4d

创建一个32位无符号整数的1 × 3向量。

X = uint32([1 255 256])
X =1x3 uint32行向量1 255 256

X转换成8位无符号整数,使用定型。每个32位值被分成4个8位段。在小端系统上运行此代码会产生以下结果。

Y = typecast(X,“uint8”
Y =1x12 uint8行向量1 0 0 255 0 0 0 0 0 0 0

的第三个要素X256,超过了8位所能容纳的最大值。因此,Y(9)中的转换值溢出到Y(10)。

Y (9:12)
ans =1x4 uint8行向量0 1 0 0

你可以转换Y返回到32位无符号整数,而不更改底层数据。

X2 = typecast(Y,“uint32”
X2 =1x3 uint32行向量1 255 256

的输出比较定型的输出来看看这两个函数的区别。

Z = cast(X,“uint8”
Z =1x3 uint8行向量1 255 255
X2 = cast(Z,“uint32”
X2 =1x3 uint32行向量1 255 255

从较小的数据类型(uint8)变成更大的(uint16).使用十六进制表示来显示位模式的重新排列。的定型函数以小端风格返回输出,将输入数据的四个8位段组合为两个16位段。

格式十六进制X = uint8([44 55 66 77])
X =1x4 uint8行向量2c 37 42 4d
Y = typecast(X,“uint16”
Y =1x2 uint16行向量372 c 4 d42

可以将小端输出转换为大端输出(反之亦然)swapbytes函数。

Y = swapbytes(typecast(X,“uint16”))
Y =1x2 uint16行向量424 c37 d

输入参数

全部折叠

输入数组,指定为标量或矢量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

新的数据类型,指定为“单一”“双”“int8”“int16”“int32”“int64”“uint8”“uint16”“uint32”,或“uint64”

如果位大小为类型n的每个元素的位大小的倍X,然后X必须包含的倍数n要转换的元素X到数据类型类型。否则,MATLAB®抛出错误。

提示

  • 定型与MATLAB有什么不同函数,因为它不会改变输入数据。定型在输出中始终返回相同的字节数Y就像输入一样X。例如,将16位整数1000转换为uint8定型在两个8位段(3和232)中返回完整的16位,从而保持原始值(3*256 + 232 = 1000)。的另一方面,函数将输入值截断为255。

  • 的格式定型输出可能因所使用的系统而异。一些计算机系统从最不重要的字节开始存储数据(一种排序称为低位优先),而其他的则从最高位字节开始(称为大端法).你可以使用swapbytes函数将字节顺序从小端序反转为大端序(反之亦然)。

扩展功能

版本历史

R2006a之前引入

另请参阅

||