typecast函数
在不更改基础数据的情况下转换数据类型
语法
Y = typecast(X, type)
说明
Y = typecast(X, type)
将 X
中的数值转换为 type
指定的数据类型。输入 X
必须是完整的非复数数值标量或向量。type
输入是设置为以下项之一的字符串:'uint8'
、'int8'
、'uint16'
、'int16'
、'uint32'
、'int32'
、'uint64'
、'int64'
、'single'
或 'double'
。
typecast
与 MATLAB cast
函数的区别在于,它不会更改输入数据。typecast
在输出 Y
中返回的字节数始终与输入 X
中的字节数相同。例如,使用 typecast
将 16 位整数 1000 转换为 uint8
会以两个 8 位段(3 和 232)的形式返回完整的 16 位,从而保持其原始值 (3*256 + 232 = 1000)。而 cast
函数将此输入值截断为 255。
根据所用系统,typecast
的输出格式可能会有所不同。某些计算机系统从数据的最高有效字节开始存储数据(称为 big-endian 排序),而其他计算机系统从最低有效字节开始存储数据(称为 little-endian 排序)。
注意
如果 X
包含的值少于生成输出值所需的值,MATLAB 会发出错误。
int8转换为int32类型
此示例尝试根据三个 8 位值的向量生成一个 32 位值。由于输入中的字节数不足,因此 MATLAB 会发出错误:
format hex typecast(uint8([120 86 52]), 'uint32') Error using typecast Too few input values to make output type.
使用四个 8 位值的向量重复此示例,该示例将返回预期结果:
typecast(uint8([120 86 52 18]), 'uint32') ans = 12345678
如上图所示可以看出这个函数等于高位*2^24+中间*2^16+中间*2*8+低位2^0实现了int8到int32的转换
其他的详细用法:https://ww2.mathworks.cn/help/matlab/ref/typecast.html
可以点击上面链接进官网看