主要内容

定型

在不改变基础数据的情况下转换数据类型

描述

例子

Y=定型(X类型的位模式X指定的数据类型类型在不改变底层数据的情况下。X必须是一个完整的非复数数值标量或向量。

例子

全部折叠

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

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

显示十六进制表示法中的位模式。使用。转换数据类型定型不改变底层数据。

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

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

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

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

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

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

格式十六进制X
X =1x4 int8行向量77 60 43 26
Y =定型(X,“单一”
Y =1 a2b3c4d

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

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

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

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

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

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

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

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

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

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

从较小的数据类型强制转换整数(uint8)变成一个更大的(uint16).使用十六进制表示来显示位模式的重排。的定型函数以小端样式返回输出,将输入数据的4个8位段组合起来生成两个16位段。

格式十六进制X = uint8([44 55 66 77])
X =1x4 uint8行向量44 55 66 77
Y =定型(X,“uint16”
Y =1x2 uint16行向量14124 19778

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

Y = swapbytes(定型(X,“uint16”))
Y =1x2 uint16行向量11319 16973

输入参数

全部折叠

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

数据类型:||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