在C中以十六进制的形式读取文件的内容

vik*_*cks 5 c hex file-handling

我有一个文件,hex.txt其中保存了十六进制值

9d ff d5 3c 06 7c 0a
Run Code Online (Sandbox Code Playgroud)

现在我需要将它转换为字符数组

unsigned char hex[] = {0x9d,0xff,0xd5,0x3c,0x06,0x7c,0x0a}
Run Code Online (Sandbox Code Playgroud)

我该怎么做 ?

vik*_*cks 4

这段代码完成了这项工作!!!,但要求我们初始化要转换的十六进制的大小#define FILELEN 15

#include<stdio.h>

#define FILELEN 15

int ascii_to_hex(char c)
{
        int num = (int) c;
        if(num < 58 && num > 47)
        {
                return num - 48; 
        }
        if(num < 103 && num > 96)
        {
                return num - 87;
        }
        return num;
}

int main()
{
        FILE *fp = fopen("sample","r");
        unsigned char c1,c2;
        int i=0;
        unsigned char sum,final_hex[FILELEN/2];
        for(i=0;i<FILELEN/2;i++)
        {
                c1 = ascii_to_hex(fgetc(fp));
                c2 = ascii_to_hex(fgetc(fp));
                sum = c1<<4 | c2;
                final_hex[i] = sum;
                printf("%02x ",sum);
        }
        printf("\n");
}
Run Code Online (Sandbox Code Playgroud)