数据转换-16进制字符
Posted hexi&echo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据转换-16进制字符相关的知识,希望对你有一定的参考价值。
任务详情
-
在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);
- 并写出测试代码测试上述函数(不能与下面代码一样),比如:(10’)
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 ++; }
}
}
————————————————
以上是关于数据转换-16进制字符的主要内容,如果未能解决你的问题,请参考以下文章