C语言将int型数据转换为十六进制的字符串
2017-02-21 11:31
351 查看
方法一:
由于使用了全局变量i来记录下标,每次在调用函数转换前都需要将将i设置成0;
方法二,使用静态变量:
测试代码如下:
int i =0; char * inttohex(int aa,char *buffer) { if (aa < 16) //递归结束条件 { if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; buffer[i+1] = '\0'; //字符串结束标志 } else { inttohex(aa / 16,buffer); //递归调用 i++; //字符串索引+1 aa %= 16; //计算当前值 if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; } return (buffer); }
由于使用了全局变量i来记录下标,每次在调用函数转换前都需要将将i设置成0;
方法二,使用静态变量:
char * inttohex(int aa,char *buffer) { static int i = 0; i = 0; if (aa < 16) //递归结束条件 { if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; buffer[i+1] = '\0'; //字符串结束标志 } else { inttohex(aa / 16,buffer); //递归调用 i++; //字符串索引+1 aa %= 16; //计算当前值 if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; } return (buffer); }
测试代码如下:
char * inttohex(int aa,char *buffer) { static int i = 0; i = 0; if (aa < 16) //递归结束条件 { if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; buffer[i+1] = '\0'; //字符串结束标志 } else { inttohex(aa / 16,buffer); //递归调用 i++; //字符串索引+1 aa %= 16; //计算当前值 if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else buffer[i] = aa - 10 + 'a'; } return (buffer); }int my_strLength(char *str)
{
int len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
char * getCRC2(char *string,char *buffer)
{
int len = my_strLength(string);
int sum = 0;
for (int i=0; i<len; i++) {
sum += (string[i] + i%10);
}
int low = sum & 0xffff;//获取低16位
return inttohex(low,buffer);
}
int main(int argc, const char * argv[]) {
char buffer1[5],buffer2[5],buffer3[5];
char *str1 = "aaaaaaafadsfasdf";
char *rs1 = getCRC2(str1,buffer1);
printf("rs===>:%s \r\n",rs1);
char *str2="bbbfffa";
char *rs2 = getCRC2(str2,buffer2);
printf("rs2===>:%s \r\n",rs2);
char *str3 = "cccccccaaa";
char *rs3 = getCRC2(str3,buffer3);
printf("rs3===>:%s \r\n",rs3);
return 0;
}
相关文章推荐
- C语言十六进制数据同字符串的相互转换
- C语言十六进制数据同字符串的相互转换
- C语言十六进制数据同字符串的相互转换
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- 字节数据与十六进制的相互转换,字符串与十六进制的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- 将字符串形式的十六进制数据转换为十六进制数据(hex)
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言将字符串转换成对应的数字(十进制、十六进制)
- 十六进制的字符串转换到十六进制byte数据
- 字节数据转换成十六进制字符串
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言将字符串转换成对应的数字(十进制、十六进制)
- 编写一个程序,用parseInt()方法将字符串100由十六进制转换为十进制的int型数据。再用valueOf()方法将字符串12345678转换为long型数据。
- C语言应用:将128位二进制数据转换为十六进制输出
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制