|
发表于 2020-4-8 13:55:44
|
显示全部楼层
本楼为最佳答案
- #include <stdio.h>
- int hex2dec(char* hex,int* index){
- int dec=0,i=0;
- char * str=hex;
- char ch=65;
- while ((ch=*str++)!='\0'){
- (*index)++;
- if (ch>='0' && ch<='9')
- dec=dec*16+ch-'0';
- else if(ch>='A' && ch<='F')
- dec=dec*16+ch-55;
- else if(ch>='a' && ch<='f')
- dec=dec*16+ch-87;
- else if ((ch==' ' ||ch=='\n'||ch==9)&&dec==0)
- continue;
- else if (dec){
- printf("该字符串只有部分正确,已经转换,剩余部分丢弃。\n");
- break;
- }
- else{
- printf("该字符串格式不正确,无法转换。\n");
- break;
- }
- }
- return dec;
- }
- int main(void) {
- char hex[100];
- int dec,index=-1;//index表示转换部分的下标
- scanf("%s",hex);
- dec=hex2dec(hex,&index);
- char *hex1=new char [index];
- hex1=hex;
- hex1[index]='\0';//若原字符串不需要了,这三行可以去掉,直接在原字符串上修改,hex[index-1]='\0';
- if (index)
- printf("%s转为十进制为%d",hex1,dec);
- delete []hex1;
- return 0;
- }
复制代码 |
|