C语言, 8 位Packed (BCD) 值转换为整数

请问这个应该要怎么解决?按照要求来写代码,在“PUT YOUR CODE HERE”写内容,例子旁边的#只是他的解释,蟹蟹大lao。题目如下。

img

img

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
#define N_BCD_DIGITS 8
uint32_t packed_bcd(uint32_t packed_bcd);
int main(int argc, char *argv[]) {
    for (int arg = 1; arg < argc; arg++) {
        long l = strtol(argv[arg], NULL, 0);
        assert(l >= 0 && l <= UINT32_MAX);
        uint32_t packed_bcd_value = l;
        printf("%lu\n", (unsigned long)packed_bcd(packed_bcd_value));
    }
    return 0;
}
// given a packed BCD encoded value between 0 .. 99999999
// return the corresponding integer
uint32_t packed_bcd(uint32_t packed_bcd_value) {
    // PUT YOUR CODE HERE
    return 0;
}
 

不管几位,你先把数组按十六进制转字符串,再按10进制转回来