| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5361 人关注过本帖
标题:字符串转换16进制的问题
取消只看楼主 加入收藏
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
结帖率:100%
收藏
 问题点数:0 回复次数:5 
字符串转换16进制的问题
比如
用*a获取输入的字符串 8e
怎么用最简单的方法转化为 16进制的8e? (不是asc码哟)   
求最简单的方法!!!   谢谢大家 集思广益 谢谢!!
搜索更多相关主题的帖子: 字符 进制 
2008-12-12 22:45
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
以下是引用柳无痕在2008-12-12 23:36的发言:

什么是16进制的8e啊

就是0x8e
2008-12-13 10:27
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
我在想用switch case 来做  o(∩_∩)o...
思考中...
2008-12-14 13:03
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
成功!!  嘿嘿  只是有一个小问题....
----------------------------------------分割线------------------------------
/*输入偶数个16进制的数 每两位为一个单位 输出对应的ascii码*/

#define SIZE 100 //可修改输入字符长度
#include<stdio.h>
#include<string.h>
#include<process.h>
int main()
{    
char a[SIZE];
int b[SIZE],c[SIZE/2],i,j,m;
printf("please input the hex:\n");
gets(a);
m=strlen(a);
if (m%2!=0) //必须输入偶数位!
{printf("please enter double number of hex!\n");exit(0);}
for(i=0;a[i]!='\0';i++)
switch (a[i])
        {
        case '0':
        b[i]=0;break;
        case '1':
        b[i]=1;break;
        case '2':
        b[i]=2;break;
        case '3':
        b[i]=3;break;
        case '4':
        b[i]=4;break;
        case '5':
        b[i]=5;break;
        case '6':
        b[i]=6;break;
        case '7':
        b[i]=7;break;
        case '8':
        b[i]=8;break;
        case '9':
        b[i]=9;break;
        case 'a':
        case'A':
        b[i]=10;break;
        case 'b':
        case 'B':
        b[i]=11;break;
        case 'c':
        case 'C':
        b[i]=12;break;
        case 'd':
        case 'D':
        b[i]=13;break;
        case 'e':
        case 'E':
        b[i]=14;break;
        case 'f':
        case 'F':
        b[i]=15;break;
        default : printf("error of hex!\n\n\n\n\n\n\n\n\n\n\n");exit(0);
        }
for(i=0,j=0;i<m/2;i++)
{    
    c[i]=b[j]*16+b[j+1];
    j=j+2;
}
for(i=0;i<m/2;i++)
    c[i]=char(c[i]);
c[i+1]='\0';
printf("out of string :\n");   
for(j=0;j<m/2;j++)
printf("%c",c[j]);  
 //这里输出结果的时候
// 若改成printf("out of string: \n%s",c);
//就只能输出第一个字符!!  这个上面还未找到原因!!!!
printf("\n");
return(0);
}
2008-12-14 15:48
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
回复 第6楼 ying8501 的帖子
科学~  呵呵 不过我们的功能不一样~~
16进制还有这种方法.....
几乎都忘了.. 感谢ls 的提醒!!

[[it] 本帖最后由 醉罪 于 2008-12-14 18:57 编辑 [/it]]
2008-12-14 18:49
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
根据6楼的提示
修改了下  貌似大大简化了~


/*输入偶数个16进制的数 以每两位为一个单位 输出对应的ascii码*/

#define SIZE 300 //可修改输入字符长度
#include<stdio.h>
#include<string.h>
#include<process.h>
int main()
{    
char a[SIZE];
int b[SIZE],c[SIZE/2],i,j,m,flag;
printf("please input the hex:\n");
gets(a);
m=strlen(a);
if (m%2!=0) //必须输入偶数位!
    {printf("please enter double number of hex!\n");exit(0);}
for(i=0;a[i]!='\0';i++)
{
    if(a[i]>='a'&&a[i]<='f')
    b[i]=a[i]-'a';
else if(a[i]>='A'&&a[i]<='F')
    b[i]=a[i]-'A';
else if(a[i]>='0'&&a[i]<='9')
    b[i]=a[i]-'0';
else flag=1;
}
for(i=0,j=0;i<m/2;i++)
{    
    c[i]=b[j]*16+b[j+1];
    j=j+2;
}
for(i=0;i<m/2;i++)
    c[i]=char(c[i]);
c[i+1]='\0';
//if(flag) printf("You input hex number is wrong!\n");
//else
//{
    printf("out of string :\n");   
    for(j=0;j<m/2;j++)
    printf("%c",c[j]);
 //这里输出结果的时候
// 若改成printf("out of string: \n%s",c);
//就只能输出第一个字符!!  这个上面还未找到原因!!!!
    printf("\n");
//}
return(0);
}
2008-12-15 11:43
快速回复:字符串转换16进制的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016804 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved