首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将指针uint8隐藏到指针uint16?

将指针uint8隐藏到指针uint16?
EN

Stack Overflow用户
提问于 2019-10-30 15:03:28
回答 1查看 92关注 0票数 0
代码语言:javascript
复制
int main
{
     uint8_t a[3] ={0x4,0x3,0x1};
     uint16_t b= *((uint16_t *) a);
     cout << (int)b;
}

结果:772那么772这个数字是什么?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-30 15:42:04

你需要搜索一下数组是如何存储在内存中的。当你声明

代码语言:javascript
复制
uint8_t a[3] = {0x4,0x3,0x1};

您创建了一个占用3个字节并包含3个元素的内存块(不考虑填充,这是另一个主题)。

所以对于

代码语言:javascript
复制
uint8_t a[3] = {0x4,0x3,0x1};

你在内存中

代码语言:javascript
复制
Byte1: 0x4
Byte2: 0x3
Byte3: 0x1

而当访问16位变量时,编译器需要3个元素,每个元素都是2个字节,总共需要6个字节。所以对于

代码语言:javascript
复制
uint16_t a[3] = {0x4,0x3,0x1};

你在内存中

代码语言:javascript
复制
Byte1+2: 0x4, 0x0
Byte3+4: 0x3, 0x0
Byte5+6: 0x1, 0x0

在您的示例中,当您将uint8_t数组转换为uint16_t时,您会将0x4和0x3合并为0x304,如您所知,0x304是772...

希望这能有所帮助

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

https://stackoverflow.com/questions/58620111

复制
相关文章

相似问题

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