c语言将字符串中两个16进制字符看做一个字符写成一个函数再将一个字符拆分成两个字符复原回原字符串写成一个函数;给出具体实现过程和注释如输入字符串aaa最后输出字符串aaa
//将字符串中两个16进制字符看做一个字符写成一个函数 void hexStrToChar(char* str) { int i,j; for(i=0,j=0;str[j];i++,j+=2) //i表示新字符串的长度,j表示旧字符串的长度 { int high = str[j]-'0'; //高位字符减去0的ASCII码值,得到对应数字 if(high>9) high = str[j]-'A'+10; //如果是字母,则减去'A'的ASCII码值,再加上10,得到对应数字 int low = str[j+1]-'0'; //低位字符同理 if(low>9) low = str[j+1]-'A'+10; str[i] = (high<<4) | low; //将高低位合并成一个字符 } str[i] = '\0'; //新字符串末尾加上'\0',表示字符串结束 }
//将一个字符拆分成两个字符,复原回原字符串写成一个函数 void charToHexStr(char* str) { int i,j; for(i=0,j=0;str[j];i+=2,j++) //i表示新字符串的长度,j表示旧字符串的长度 { int high = (str[j]>>4) & 0x0f; //将字符的高4位取出,得到高位字符 int low = str[j] & 0x0f; //将字符的低4位取出,得到低位字符 if(high<10) str[i] = high+'0'; //如果是数字,则加上'0'的ASCII码值,得到对应字符 else str[i] = high-10+'A'; //如果是字母,则加上'A'的ASCII码值,再减去10,得到对应字符 if(low<10) str[i+1] = low+'0'; //低位字符同理 else str[i+1] = low-10+'A'; } str[i] = '\0'; //新字符串末尾加上'\0',表示字符串结束 }
int main() { char str[100] = "616161"; //输入字符串 printf("原字符串:%s\n", str); hexStrToChar(str); //将字符串中的16进制字符转换成字符 printf("转换后:%s\n", str); charToHexStr(str); //将字符转换成16进制字符 printf("还原后:%s\n", str); return 0;
原文地址: https://www.cveoy.top/t/topic/eCeQ 著作权归作者所有。请勿转载和采集!