首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MATLAB uint8值和uint16值不同?

问为什么MATLAB uint8值和uint16值不同?
EN

Stack Overflow用户
提问于 2016-04-12 07:38:10
回答 2查看 298关注 0票数 2

我已经将uint8值声明为A = [4, 8, 16, 32];,并将其转换为B = typecast(uint8(A), 'uint16')值,但答案是2052 8208 --如果有人能帮助我理解其背后的原因,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-12 07:50:19

MATLAB的类型转换函数不改变底层数据,就可以转换数据类型。换句话说,它不会改变数据结构的底层内存表示,而只是将其视为一个uint16而不是uint8。

在这种情况下,您希望在转换后将数据保留到原始值。因此,您确实希望MATLAB更改数据结构的内存表示形式。有两种方法可以执行这种类型的铸造:

-using浇铸函数

代码语言:javascript
复制
B = cast(uint8(A), 'uint16');

-using对uint16函数的直接调用:

代码语言:javascript
复制
B = uint16(A);

结果:

代码语言:javascript
复制
B =

  4      8     16     32
票数 2
EN

Stack Overflow用户

发布于 2016-04-12 07:52:34

您可能期望Matlab将您的uint8值只放在uint16变量中。这不是类型广播函数正在做的事情。它将保留从输入到输出的字节数。因此,在您的示例中,它将4和8的位表示合并到一个uint16数字中,并等效于16和32。

因此,4的二进制表示为00000100,8的二进制表示为00001000,并合并到一起(以16位数表示),它们给出0000100000000100,即2052年。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36566618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档