c语言中如何将2个字符拼成一个十六进制数

比如说"2","C"拼成十六进制数0x2C

c语言中,字符ascll码是通过控制其输出格式来把它转化为整型数的,格式控制中"%c",就是将其以字符形式输出,而直接改成"%d",就可以将其转换为整型数。
ascii码,英文全称:american
standard
code
for
information
interchange,是美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ascii允许计算机和计算机程序交换信息。ascii字符集是与ansi字符集中的前面128个(0-127)字符相同。
美国信息交换标准代码ascii为"美国信息交换标准代码"十个字对应英文的缩写,ascii文件是简单的无格式文本文件,可以由任何计算机所识别,windows中的记事本及任何文字处理程序都可以阅读及创建ascii文件。ascii文件通常都具有扩展名.txt(例如readme.txt)
在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-15
我以前编的不知道是不适合你
#include
"stdio.h"
#include
"string.h"
void
main()
{
while(1){
int
ox(char
x[100]);
char
x[100];
scanf("%s",x);
printf("%d\n",ox(x));
}
}
int
ox(char
x[100])
{
void
turn(char
x[100],int
a,int
z[100]);
int
a,b,d,e,i;
int
z[100]={0};
a=strlen(x);
turn(x,a,z);
for(b=0,i=0;i<=a-1;i++){
for(d=1,e=1;d<=a-i-1;d++)
e*=16;
b+=z[i]*e;
}
return(b);
}
void
turn(char
x[100],int
a,int
z[100])
{
char
y[17]={"0123456789abcdef"};
int
i,b,c=0;
for(i=0;i<=a-1;i++){
for(b=0;b<=15;b++){
if(x[i]==y[b]){
z[c]=b;
c++;
break;
}
}
}
}
你输入的是0到F都是字符型的,输出的是对应的10进制数
第2个回答  2010-04-26
我以前编的不知道是不适合你

#include "stdio.h"
#include "string.h"

void main()
{
while(1){
int ox(char x[100]);
char x[100];
scanf("%s",x);
printf("%d\n",ox(x));
}
}

int ox(char x[100])
{
void turn(char x[100],int a,int z[100]);
int a,b,d,e,i;
int z[100]={0};
a=strlen(x);
turn(x,a,z);
for(b=0,i=0;i<=a-1;i++){
for(d=1,e=1;d<=a-i-1;d++)
e*=16;
b+=z[i]*e;
}
return(b);
}

void turn(char x[100],int a,int z[100])
{
char y[17]={"0123456789abcdef"};
int i,b,c=0;
for(i=0;i<=a-1;i++){
for(b=0;b<=15;b++){
if(x[i]==y[b]){
z[c]=b;
c++;
break;
}
}
}
}

你输入的是0到F都是字符型的,输出的是对应的10进制数本回答被提问者采纳
相似回答