| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5363 人关注过本帖
标题:字符串转换16进制的问题
只看楼主 加入收藏
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
结帖率:100%
收藏
 问题点数:0 回复次数:7 
字符串转换16进制的问题
比如
用*a获取输入的字符串 8e
怎么用最简单的方法转化为 16进制的8e? (不是asc码哟)   
求最简单的方法!!!   谢谢大家 集思广益 谢谢!!
搜索更多相关主题的帖子: 字符 进制 
2008-12-12 22:45
柳无痕
Rank: 1
来 自:浙江省
等 级:新手上路
帖 子:57
专家分:0
注 册:2008-12-10
收藏
得分:0 
什么是16进制的8e啊
2008-12-12 23:36
醉罪
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
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
//字符串转换16进制的问题
#include<stdio.h>
void main()
{  
    char a[80];
    int i,flag=0;
    long  sum=0;
    printf("请输入一个16进制数:  ");
    gets(a);
    i=0;
    if(a[i]==0)i++;
    else if(a[i]=='x'||a[i]=='X')i++;

    for(;a[i];i++)
        if(a[i]>='0'&&a[i]<='9')
            sum=sum*16+a[i]-'0';
        else if(a[i]>='a'&&a[i]<='f')
            sum=sum*16+a[i]-'a'+10;
        else if(a[i]>='A'&&a[i]<='F')
            sum=sum*16+a[i]-'A'+10;
        else flag=1;

    if(flag)
        printf("  数据错误, %s 不是一个正确的16进制数!\n\n",a);
    else
        printf("  16进制数 %s = %ld (十进制数)\n\n",a,sum);    
}
2008-12-14 16:38
醉罪
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.020276 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved