主要内容

typeCast.

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

描述

例子

y= typeCast(X类型转换位模式X到所指定的数据类型类型不改变底层数据。X必须是完整的,非复杂,数字标量或向量。

例子

全部收缩

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

x = int16(-1)
X =int16-1
y = typecast(x,'uint16'
y =uint1665535.

显示十六进制表示中的位模式。通过使用转换数据类型typeCast.不会更改底层数据。

格式十六进制X
X =int16FFFF.
y = typecast(x,'uint16'
y =uint16FFFF.

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

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

转换使用4个字节(32位)的存储的四个8位整数,以使用4个字节的存储单精度编号。

y = typecast(x,'单身的'
y =单身的3.5411E-23.

显示十六进制表示中的位模式。在十六进制符号中,1字节(8位)由两位数表示。这typeCast.功能重新排列位模式而不修改数据。

格式十六进制X
X =1x4 INT8行向量4D 3C 2B 1A
y = typecast(x,'单身的'
y =单身的1a2b3c4d.

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

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

X进入8位无符号整数typeCast.。每个32位值被分成四个8位段。在Little-Endian系统上运行此代码会产生以下结果。

y = typecast(x,'uint8'
y =1x12 uint8行矢量1 0 0 0 255 0 0 0 0 1 0 0

第三个要素X,256,超过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.

比较输出typeCast.和产出的要查看两个功能之间的差异。

z =施放(x,'uint8'
z =1x3 uint8行矢量1 255 255.
x2 =施放(z,'uint32'
x2 =1x3 uint32行向量1 255 255.

从较小的数据类型投射整数(uint8.)进入一个更大的人(uint16)。使用十六进制表示来显示位模式的重新排列。这typeCast.函数以小端风格返回输出,组合输入数据的四个8位片段以产生两个16位段。

格式十六进制x = uint8([44 55 66 77])
X =1x4 uint8行矢量2C 37 42 4D
y = typecast(x,'uint16'
y =1x2 uint16行向量372C 4D42

您可以使用使用的转换为Big-Endian的Little-Endian输出(反之亦然)swapbytes.功能。

y = swapbytes(typecast(x,'uint16')))
y =1x2 uint16行向量2C37 424D.

输入参数

全部收缩

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

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

新数据类型,指定为'单身的''双倍的''int8''int16''int32''int64''uint8''uint16''uint32', 或者'uint64'

如果有点大小类型N比每个元素的位大小大的时间X, 然后X必须包含多个N转换元素X到数据类型类型。否则,matlab.®抛出错误。

尖端

  • typeCast.与matlab不同功能在不改变输入数据的情况下。typeCast.始终返回输出中相同数量的字节y在输入中X。例如,将16位整数1000铸造给uint8.typeCast.返回两个8位段(3和232)中的完整16位,从而保持原始值(3 * 256 + 232 = 1000)。这另一方面,函数将输入值截断为255。

  • 格式typeCast.输出可能因您使用的系统而有所不同。一些计算机系统存储以最低有效字节开始的数据(一个调用的订购小endian.),而其他人从最重要的字节开始(称为大endian.)。你可以使用swapbytes.函数撤消从小endian排序的字节排序(反之亦然)。

扩展能力

也可以看看

||

在R2006A之前介绍