c语言字符转16进制函数 c语言16进制转换成字符

C语言如何把11位16进制字符串转成16进制数?这个就是一个16进制数转10进制的程序
先以字符串方式逐字符读入16进制数
然后对每个读入的字符依次做判断
t=s[i]-'0'
//临时变量t为当前判断的字符串的ascii码值减去字符'0'的ascii码值c语言字符转16进制函数,这一步的作用是将字符型转换为整型以供计算
if(t=9)
k=k*16 s[i]-'0'
//如果t≤9c语言字符转16进制函数 , 说明原字符为'0'~'9'c语言字符转16进制函数 , 转换后直接得到对应数字0~9 , 因此直接将这个数字转换为十进制即可c语言字符转16进制函数:k=k*16 s[i]-'0'即将当前位转换为十进制
else
k=k*16 s[i]-'a' 10
//如果t9,说明原字符为'a'~'f',转换后不能得到对应数字,必须通过s[i]-'a' 10把字符'a'~'f'转换为数字10~15,再逐位转换为十进制 。
如何给一个C语言字符串转16进制数的函数?多麻烦啊c语言字符转16进制函数!
看好c语言字符转16进制函数了c语言字符转16进制函数:
#includestdio.h
int a;
char *str="1Af";
int main()
{
sscanf(str,"%x",a);//%x为读入16进制数c语言字符转16进制函数 , 大小写均可 。sscanf是从c字符串中读入变量 。
printf("%i",a);
return 0;
}
c语言编程 把十进制转换为十六进制【c语言字符转16进制函数 c语言16进制转换成字符】方法一:
#includeiostream
#include string
using namespace std;
string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp0)str=
DecIntToHexStr(Temp); if (left10)str= (left'0'); elsestr= ('A'left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; istr.size();i)Dec =
Dec * 10str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cinDecStr) {cout"0x"DecStrToHexStr(DecStr); } return 0;}
方法二:
#includeiostream
#include string
#includevector
#include sstream
#include math.h
using namespace std;int main()
{ string decStr; cindecStr; int num = stoi(decStr); vectorintv; while (num) {int bit = num % 2;v.push_back(bit);num = num / 2; }
reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) {for (int i = 0; iv.size() / 4;i){int temp = 0, k = 3;for (int j = i * 4; j(i
1) * 4;j){if (v[j] == 1)temp= pow(2, k);--k;}if (temp = 9)hexStr= temp;elsehexStr= ('A'temp - 10);} }
else {int zeroNum = 4 - v.size() % 4;for (int i = 0; izeroNum;i)v.insert(v.begin(), 0);for (int i = 0; iv.size() / 4;i){int temp = 0, k = 3;for
(int j = i * 4; j(i1) * 4;j){if (v[j] == 1)temp= pow(2, k);--k;}
if (temp = 9){stringstream ss;string strTemp;
sstemp;ssstrTemp;hexStr= strTemp;}elsehexStr= ('A'temp - 10);} } couthexStrendl; return 0;}
扩展资料:
还有3种方式可以实现,其中两种是使用系统函数 , 另一种是直接自己编写 。
下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以 。可自己选择需要的实现方式 。
利用系统函数有
1. char *itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置 , base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的?。?。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){itoa (aa, buffer, 16);return (buffer);}
2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字 。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){sprintf(buffer, "%x", aa);return (buffer);}
3. 自己编写
如果参数只要两位数的整数,那么很简单 。
代码如下:
#include stdio.h#include stdlib.h char buffer [33]; //用于存放转换好的十六进制字符串 , 可根据需要定义长度 char * inttohex(int aa)
{sprintf(buffer, "%x", aa);return (buffer);} int main ()
{int num;char * hex_str;printf ("Enter a number: ");scanf ("%d",num);hex_str = inttohex (num);printf ("Hexadecimal number: %sH\n", hex_str);return 0;}
C语言字符数组如何转成16进制需要准备的材料分别有:电脑、C语言编译器 。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp 。
2、在test.cpp文件中,输入C语言代码:
char *pKey = "AA1F1905A8F3E4D3C3C536FE615C93BC";
for (int i = 0; istrlen(pKey) - 1; i= 2) {
printf("0x%c%c\n", pKey[i], pKey[i 1]);
}
3、编译器运行test.cpp文件,此时成功将字符串数组转为了16进制的形式进行了输出 。
求c语言将十进制数转换为16进制的函数c语言将十进制数转换为16进制的函数:
#includestdio.h
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("请输入一个数字--");
scanf("%d",u10);
if(u10==0)
{
u16[0]='0';
w;
}
else
{
a=u10;
while(a)
{
b=a;
if(b10)
{
u16[w]='0' b;
}
else
{
u16[w]='A' b-10;
}
a=a/16;
w;
}
}
printf("\n");
printf("%d(10)转换为16进制数字为:",u10);
for(i=w-1;i=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
扩展资料:
十进制数转换为二进制数方法
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并 。
1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余 , 逆序排列"法 。具体做法是:用2去除十进制整数 , 可以得到一个商和余数;再用2去除商,又会得到一个商和余数 , 如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来 。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法 。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止 。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位 , 后取的整数作为低位有效位 。
参考资料:
百度百科-十进制
c语言输入一个字符串转换为十六进制并输出#include stdio.h
int IsHexChar(char ch)
{
if((ch='0'ch='9') || (ch='a'ch='f') ||(ch='A'ch='F'))
return 1;
else
return 0;
}
int main()
{
char str[1000] = "123342abcdAFB1H";
int cnt = 0;
int i;
printf("input str:\n");
//gets(str);
i = 0;
while(str[i]str[i 1])
{
if(IsHexChar(str[i])IsHexChar(str[i 1]))
{
cnt;
printf(cnt==1?"0x%c%c":", 0x%c%c", str[i], str[i 1]);
i;
i;
}
else
break;
}
printf("\ncnt = %d\n", cnt);
return 0;
}
c语言字符转16进制函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言16进制转换成字符、c语言字符转16进制函数的信息别忘了在本站进行查找喔 。

    推荐阅读