c:逐个字符串发送字符串作为十六进制表示

时间:2015-08-11 16:33:20

标签: c arrays hex

char str[] = "05AD2101";

我有一个函数sendChar,我希望将这两个字符串作为十六进制值发送给,如下所示:

sendChar(0x05);

sendChar(0xAD);

sendChar(0x21);

sendChar(0x01);

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我没有对此进行测试,可能存在语法错误:

int char2hex(char c){
   switch(c){
       case '0' : return 0x00;
       case '1' : return 0x01;
       case '2' : return 0x02;
       // until 9
       case 'A' : return 0x0a;
       case 'B' : return 0x0b;
       case 'C' : return 0x0c;
       // until F
   }
   return -1; // unknown char
}

void send(char str[]){
    if (!str)
        return;

    int i;
    for(i = 0; i < strlen(str); ++i)
        sendChar(char2hex(str[i]));
}

如果您需要更多帮助,请发表评论。

更新

可能有很多改进,检查NULL,放置const,检查小写字母A,B,C,D,E,F等。

你甚至可以做类似的事情 - 但在使用之前测试它:

int char2hex(char c){
   if (c < 'A')
      return c - '0';
   else
      return c - 'A' + 10;
}