将数组中的十六进制转换为ASCII以在C语言中进行比较

时间:2019-03-11 04:05:00

标签: c arrays

我想将数组中的十六进制转换为ASCII以比较消息。

我在下面有这个

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

void main(void)
{
    char Message1[] = "Hello123";
    char Message2[] = {'4','8','6','5','6','C','6','C','6','F','3','1','3','2','3','3'};   //This message is "Hello123" and I would like to convert "Message2[]" to "Hello123".

    if(strcmp (Message1,Message2) == 0 )
    {
       LED1(ON);
    }
    else
    {
       LED1(0FF);
    }
}

您能否告诉我或建议我如何将十六进制从“ Message2 []”数组中的ASCII转换为String以进行上面的比较?

1 个答案:

答案 0 :(得分:0)

char Message1[] = "Hello123"; 
char Message2[] = {'4','8','6','5','6','C','6','C','6','F','3','1','3','2','3','3'}; //This message is "Hello123" and I would like to convert "Message2[]" to "Hello123". 
char Message2asStr[sizeof(Message2)/2+1] ={}; // zero the buffer
unsigned i;
for (i=0; i < sizeof(Message2) ; i += 2) {
    int ch;
    if (sscanf(Message2+i, "%2x", &ch) != 1) {
       printf("there is an error\n");
       break;
    }
    Message2asStr[i/2] = ch;
}