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;
}
结果