32位int和8位字符数组互相转换

在学习STM32的Flash读写时,遇到需要把uint32_t类型的长度数据存储在Flash中,而现有的Flash写入函数需要读取uint8_t的字符数组。

用8位数组以小端模式存储

#include <iostream>
using namespace std;

int main()
{
	unsigned int APP_len=0x12345678;
	unsigned char data_length[4]={0,0,0,0};
	data_length[3]|=APP_len>>24; //12
	data_length[2]|=APP_len>>16; //34
	data_length[1]|=APP_len>>8;  //56
	data_length[0]|=APP_len;     //78
	for(int i=0;i<4;i++)
	printf("\r\n%x\r\n",data_length[i]);
	unsigned int Flash_APP_len=0;
	for(int i=0;i<4;i++)
	{
		uint8_t tmp_len=data_length[i];
		Flash_APP_len |=tmp_len<<(8*i);
	}
	printf("\r\n%#x\r\n",Flash_APP_len);
   	return 0;
}

结果

posted @ 2022-03-19 15:39  中庭之园  阅读(1799)  评论(0编辑  收藏  举报