我想将uint8_t
数组类型更改为int
或string
类型,以便可以将其写入文本文件中。
例如数组:
uint8_t outstr[4]; \\ outstr is 0x00 0x04 0x49 0xba
我尝试使用以下代码:
fprintf(ptr_myfile, "%d \n", *outstr);
这段代码只给我第一个数字'0',但是我需要all数组。
十六进制数0x000449ba
的预期结果应为281018
。
答案 0 :(得分:4)
如果数组大小始终为4,则可以创建一个uint32_t
变量:
uint32_t num = 0;
for(int i=0; i<4; i++)
{
num <<= 8;
num |= outstr[i];
}
fprintf(ptr_myfile, "%" PRIu32 "\n", num);
答案 1 :(得分:0)
另外两种方式:
typedef union
{
uint32_t u32;
uint8_t u8[4];
}u32_t;
int main()
{
u32_t u32u;
uint32_t u32;
/* -----------------------*/
memcpy(&u32, outstr, sizeof(u32));
printf("%u", u32);
/* -----------------------*/
//you can also use a loop
u32u.u8[0] = outstr[0];
u32u.u8[1] = outstr[1];
u32u.u8[2] = outstr[2];
u32u.u8[3] = outstr[3];
printf("%u", u32u.u32);
return 0;
}