优秀的编程知识分享平台

网站首页 > 技术文章 正文

C语言数制与大小端转换(c语言由大到小)

nanyue 2024-08-06 18:06:04 技术文章 3 ℃

编程时,经常用到进制转换、字符转换。比如软件界面输入的数字字符串,如何将字符串处理成数字呢?今天就和大家分享一下。

嵌入式要学习的东西有很多,希望大家可以尽快掌握嵌入式需要学习的东西,有学习路径非常重要,我总结了很多嵌入式详细资料以及门路,都是亲身经历哒

扫码进群领资料

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)
最近发表
标签列表