编程时,经常用到进制转换、字符转换。比如软件界面输入的数字字符串,如何将字符串处理成数字呢?今天就和大家分享一下。
嵌入式要学习的东西有很多,希望大家可以尽快掌握嵌入式需要学习的东西,有学习路径非常重要,我总结了很多嵌入式详细资料以及门路,都是亲身经历哒
u8、u32转换
举个例子:ASCII码里:
这里写图片描述字符‘A’ , 一个字节8bit 。
即u8 十六进制为:
0x41
二进制为:
0100 0001
而对应的十进制为65整型65,4个字节32bit。
即u32 十六进制为:
0x41
二进制为:
0000 0000 0000 0000 0000 0000 0100 0001
将u32数转换成u8数组。
注意:这里是字符数组,不是字符串。
字符串是以空字符(\0)结尾的char数组
void U32ToU8Array(uint8_t *buf, uint32_t u32Value)
{
buf[0] = ((u32Value >> 24) & 0xFF);
buf[1] = ((u32Value >> 16) & 0xFF);
buf[2] = ((u32Value >> 8) & 0xFF);
buf[3] = (u32Value & 0xFF);
}????效果:整型 50 转字符数组 {‘\0’,’\0’,’\0’,’2’}
u8数组转u32:
void U8ArrayToU32(uint8_t *buf, uint32_t *u32Value)
{
*u32Value = (buf[0] <<24) + (buf[1] <<16) + (buf[2] <<8) + (buf[3] <<0);
}
效果:字符数组 {‘\0’,’\0’,’\0’,’2’}转为整型 50
大小端(高低位)转换
STM32 默认是小端模式的,那么该如何转为大端?
//转为大端:
pPack[0] = (u8)((len >> 8) & 0xFF);
pPack[1]?=?(u8)(len?&?0xFF);
//转为小端:
pPack[0] = (u8)(len & 0xFF);
pPack[1]?=??(u8)((len?>>?8)?&?0xFF);????效果:len为数据类型为 u16(short),????比如 0x11 0x22,转为u8(usigned char)数组。
大端为:
pPack[0] (0x11 )
pPack[1] (0x22)
小端为:
pPack[0] (0x22)
pPack[1] (0x11)