sprintf(buf, "%x%x%x", arr[0], arr[1], arr[2]);buf为转换后的字符串。可以printf先看下是不是需要的。如果是64位的十六进制,可以写成 sprintf(buf, "% "PRIx64" % "PRIx64" % "PRIx64" ", arr[0], arr[1], arr[2]);...
include <stdio.h>int IsHexChar(char ch){if((ch>='0' && ch<='9') || (ch>='a' && ch<='f') ||(ch>='A' && ch<='F'))return 1;elsereturn 0;}int main(){char str[1000] = "123342abcdAFB1H";int cnt = 0;int i;printf("input str:\n");//gets(str);i =...
/*十六进制转换成十进制*/#include<stdio.h>intmain(void){inti,k;charhexad[80],str[80];longnumber;printf("Enter a string:");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';/*过滤非十六进制字符后生成新字符串*/k=0;for(i=0;str[i]!='\0';i++)if(str[i]<='9'&&...
int a; cin>>a; if(a<=0) return 0; cout<<"输入基数(2-16之间):"<<endl; int b; cin>>b; if(b<2 || b>16) { cout<<"输入基数错误!"<<endl; return 0; } char c[100]; int i=0; for(;;) { if(a...
这个是因为中文字符的编码方式和ascii是不一样的,你用的是gbk编码方式,每个中文汉字是两个字节,且编码上高位的字节都是1,这是编码表上设定好的,如果采用utf8编码,那么又是另外一套编码方式,输出也会不一样
把最后的printf("%d",sum)改成printf("%u",sum)。所有大于0x80000000的数用%d输出时,都是负数。