char str[] = "05AD2101";
我有一个函数sendChar,我希望将这两个字符串作为十六进制值发送给,如下所示:
sendChar(0x05);
sendChar(0xAD);
sendChar(0x21);
sendChar(0x01);
我该怎么做?
答案 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;
}