如何将uint8_t数组更改为数字

时间:2018-12-17 19:51:02

标签: c

我想将uint8_t数组类型更改为intstring类型,以便可以将其写入文本文件中。 例如数组:

uint8_t outstr[4]; \\ outstr is 0x00 0x04 0x49 0xba

我尝试使用以下代码:

fprintf(ptr_myfile, "%d \n", *outstr);

这段代码只给我第一个数字'0',但是我需要all数组。 十六进制数0x000449ba的预期结果应为281018

2 个答案:

答案 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;
}