c语言for循环进制转换

问题遇到的现象和发生背景

读取区中一条ASCII码内容 //val:B5 03 00 C4 2F E2 B6 C1 A1 C7 ....\n // val:后 最多有765个ASCII码 ,想要读到\n就结束并且把前四位ASCII码
val:去除不要,并且把下面代码sscanf的内容变成一整个for循环

用代码块功能插入

```c
char *retb =strstr(line,val)
if (NULL != retb)
{
unsigned char valu;
sscanf(line + 10, "%02X", &valu);
printf(" % d\n", valu);
sscanf(line + 7, "%02X", &valu);
printf(" % d\n", valu);
sscanf(line + 4, "%02X", &valu);
printf(" % d\n", valu);
printf("%s\n", reb + 4);
}

```代码,请勿粘贴截图

我想要达到的结果

想要读到\n就结束并且把前四位ASCII码
val:去掉并且把下面代码sscanf的内容变成一整个for循环

#include <stdio.h>
#include <string.h>

#define MAX_SIZE 3000

int main() {
  char line[MAX_SIZE];
  if (!fgets(line, MAX_SIZE, stdin))
    return 1;

  char *p = line;

  // Ignore first four items.
  for (int i = 0; i < 4; i++)
    p = strchr(p + 1, ' ');

  while (p) {
    int val;
    sscanf(p, "%x", &val);
    printf("%d ", val);
    p = strchr(p + 1, ' ');
  }

  return 0;
}
$ gcc -Wall main.c
$ ./a.out
val:B5 03 00 C4 2F E2 B6 C1 A1 C7
47 226 182 193 161 199

这个描述有点乱哈,重新写写


char *retb = strstr(line, val);
if (NULL != retb) {
    unsigned char valu;

    for (int i = 10; i >= 4; i -= 3) {
        sscanf(line + i, "%02X", &valu);
        printf("%d\n", valu);
    }
    printf("%s\n", reb + 4);
}