任务详情
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
在utils.h和utils.c中完成16进制字符‘0‘-‘9‘,‘A‘-‘F‘,‘a‘-‘f‘与十六进制数据0-15的转换功能(10’):
int Hex2Char(unsigned int fromi,unsigned char * toc);
int Char2Hex(unsigned char fromc,unsigned int * toi);
unsigned char * c;
Hex2Char(1, &c)
//结果:c = ‘1‘
Hex2Char(15, &c)
//结果:c = ‘F‘
unsigned int i;
Char2Hex(‘1‘, &i);
//结果:i = 1
Char2Hex(‘F‘, &i);
//结果:i = 15
提交代码(或代码链接)和运行结果
void StringToHex(char *str, unsigned char *strhex)
{
uint8_t i,cnt=0;
char *p = str; //直针p初始化为指向str
uint8_t len = strlen(str); //获取字符串中的字符个数
while(p != ‘\0‘) { //结束符判断
for (i = 0; i < len; i ++) //循环判断当前字符是数字还是小写字符还是大写字母
{
if ((p >= ‘0‘) && (*p <= ‘9‘)) //当前字符为数字0~9时
strhex[cnt] = *p - ‘0‘ + 0x30;//转为十六进制
if ((*p >= ‘A‘) && (*p <= ‘Z‘)) //当前字符为大写字母A~Z时
strhex[cnt] = *p - ‘A‘ + 0x41;//转为十六进制
if ((*p >= ‘a‘) && (*p <= ‘z‘)) //当前字符为小写字母a~z时
strhex[cnt] = *p - ‘a‘ + 0x61; //转为十六进制
p ++; //指向下一个字符
cnt ++;
}
}
}
————————————————
原文:https://www.cnblogs.com/422100xj/p/14763015.html