OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7073|回复: 8

关于u16的一点理解

[复制链接]

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
发表于 2017-6-21 15:30:43 | 显示全部楼层 |阅读模式
1金钱
刚才看程序时候遇到u8 u16 u32,然后查了查资料,关于他们含义的一点理解。
u8、u16、u32
u8    无符号字符型(8位)
u16  无符号短整型(16位)
u32  无符号长整型(32位)

刚才碰到的问题是定义一个u16的数组 u16 a[10],这个u16的意思是不是就是定义数组中的每一个数最高位是16位,
也就是,可以存放字符(字符占8位)abc等,
也可以存放字(一个字是两个字节,所以占16位),
同样也可以存放数字123(但是存放数的最大不能超过2^16)等,
是这个意思吗


想得不知道对不对,以前觉得C语言基础还可以,感觉学32以后用到C语言才知道很渣,还忘各位兄弟指点小弟一下。

最佳答案

查看完整内容[请看2#楼]

一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。 然后u16 a[10]这么定义一般来说A里面东西都是同一类型的,没有人把一堆不同类型的东西看一个数组里(结构体除外)。你上面的英文+汉字,其实英文会自动转成ASCII 码,汉字会自动转 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-6-21 15:30:44 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 16:25
刚才DMA历程中看到条代码
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};
后面串 ...

一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等等,第N个位置和第N+1个位置存“串”(因为一个汉字的GBK码是两个字节,它会自动用GBK码表示,比如串字可能就是0xA1,0x3D,所以可以存)。

然后u16 a[10]这么定义一般来说A里面东西都是同一类型的,没有人把一堆不同类型的东西看一个数组里(结构体除外)。你上面的英文+汉字,其实英文会自动转成ASCII 码,汉字会自动转成GBK码,所以类型也是一样的,都是u8。

至于结构体,额,不会,我也正在学它。
自在随心
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
604
金钱
604
注册时间
2014-4-14
在线时间
105 小时
发表于 2017-6-21 15:52:42 | 显示全部楼层
数据类型不一样确认长度不超可以存,但是大多数编译器会有警告。
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
 楼主| 发表于 2017-6-21 16:25:22 | 显示全部楼层
翼间 发表于 2017-6-21 15:52
数据类型不一样确认长度不超可以存,但是大多数编译器会有警告。

刚才DMA历程中看到条代码
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA 串口实验"};
后面串口实验四个字不是汉字吗,占16位 为什么这个数组也可以存放
回复

使用道具 举报

16

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-12-4
在线时间
43 小时
发表于 2017-6-21 17:19:16 | 显示全部楼层
数组长度为10个字(20个字节),可以存放长度20个字节的数据,数据的位数总长度不能超过20*8,即(2^160)你可以用指针来操作你想存的位置
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
 楼主| 发表于 2017-6-21 17:50:41 | 显示全部楼层
yuzeyuan1 发表于 2017-6-21 17:39
一个汉字算两个字节,这部分代码的意思是,开一块空间(没有确认大小),第一个位置存A,第二个位置存L等 ...

那就是U8 U16 U32存放数据的区别是什么呢
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2017-6-8
在线时间
46 小时
 楼主| 发表于 2017-6-21 20:41:28 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 17:50
那就是U8 U16 U32存放数据的区别是什么呢

又仔细想了你说的话,觉得大概U8 U16 U32的区别就是定义位数不一样,
u8 就是里面的数据是8位的
u16 就是里面的数据是16位的
u32 就是里面的数据是32位的
对吧  
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-22 23:22:48 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 20:41
又仔细想了你说的话,觉得大概U8 U16 U32的区别就是定义位数不一样,
u8 就是里面的数据是8位的
u16 就 ...

是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-22 23:23:00 | 显示全部楼层
stm32f103ZE 发表于 2017-6-21 20:41
又仔细想了你说的话,觉得大概U8 U16 U32的区别就是定义位数不一样,
u8 就是里面的数据是8位的
u16 就 ...

是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 20:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表