c语言16进制与10进制的转换 c语言中16进制转换为十进制

16\u8fdb\u5236\u4e0e10\u8fdb\u5236\u600e\u4e48\u4e92\u76f8\u8f6c\u6362

1\u3001\u9996\u5148\u770b\u4e00\u4e0b\u5341\u516d\u8fdb\u5236\u4e0e\u5341\u8fdb\u5236\u7684\u533a\u522b\u548c\u8868\u793a\u65b9\u6cd5\uff0c

2\u3001\u5341\u516d\u8fdb\u5236\u6570\u5176\u5b9e\u662f\u7531\u4e8c\u8fdb\u5236\u6570\u6bcf\u56db\u4f4d\u8f6c\u5316\u5206\u522b\u8f6c\u5316\u4e3a\u5341\u8fdb\u5236\u6570\u800c\u6765\uff0c

3\u3001\u5341\u516d\u8fdb\u5236\u6570\u8f6c\u5316\u4e3a\u5341\u8fdb\u5236\u6570\u53ef\u4ee5\u8fd9\u6837\u64cd\u4f5c\uff0c

4\u3001\u5341\u8fdb\u5236\u6570\u8f6c\u5316\u4e3a\u5341\u516d\u8fdb\u5236\u6570\u53ef\u4ee5\u5148\u8f6c\u4e8c\u8fdb\u5236\u518d\u8f6c\u5341\u516d\u8fdb\u5236\uff0c

5\u3001\u5341\u8fdb\u5236\u4e5f\u53ef\u4ee5\u76f4\u63a5\u8f6c\u5341\u516d\u8fdb\u5236\uff0c\u5b8c\u6210\u6548\u679c\u56fe\u3002

\u6700\u7b80\u5355\u7684\u4f7f\u7528scanf()\u51fd\u6570\u548cprintf()\u51fd\u6570\u8fdb\u884c\u683c\u5f0f\u8f6c\u6362\uff0c\u4ee516\u8fdb\u5236\u683c\u5f0f\u8f93\u5165\uff0c\u518d\u4ee510\u8fdb\u5236\u683c\u5f0f\u8f93\u51fa\u3002
\u7a0b\u5e8f\u4ee3\u7801\u5982\u4e0b\uff1a
#include
int main()
{
int a=0;
int i=0;
scanf("%x",&a);
printf("%d",a);
return 0;
}
\u8fd0\u884c\u7ed3\u679c\uff1a

\u6269\u5c55\u8d44\u6599\uff1a
scanf\u51fd\u6570\u4e0eprintf\u51fd\u6570\u7684\u7528\u6cd5\u5f88\u50cf\uff0c\u90fd\u662f\u4ee5\u683c\u5f0f\u5316\u7684\u5f62\u5f0f\u8fdb\u884c\u64cd\u4f5c\uff0c\u4f8b\u5982\u4e0a\u8ff0\u7a0b\u5e8f\u4e2dscanf("%x", &a);\u5c31\u662f\u5c06\u8f93\u5165\u6570\u636e\u4ee5\u5341\u516d\u8fdb\u5236\u683c\u5f0f\u5b58\u50a8\u5230\u53d8\u91cfa\u4e2d\u3002
"%x"\u662f\u5c06\u5b57\u7b26\u4e32A23CD\u4ee5\u5341\u516d\u8fdb\u5236\u5f62\u5f0f\u8f93\u5165a\u4e2d\uff0c\u5982\u679c\u5c06"%x"\u6362\u6210\u4e3a"%d"\u7684\u8bdd\uff0c\u5c31\u662f\u5c06\u5b57\u7b26\u4e32A23CD\u4ee5\u5341\u8fdb\u5236\u5f62\u5f0f\u8f93\u5165a\u4e2d\uff0c\u8fd9\u663e\u7136\u662f\u9519\u8bef\u7684\uff0c\u56e0\u4e3a\u5c06A23CD\u8f6c\u6362\u4e3a\u5341\u8fdb\u5236\u7684\u65f6\u5019\uff0c\u65e0\u6cd5\u89e3\u6790A\uff0cCD\u7b49\u5b57\u7b26\uff0c\u6240\u4ee5\u5f97\u51fa\u7684\u7ed3\u679c\u5c31\u662f\u9519\u8bef\u7684\u3002

这个函数的int HtoD(char *a);就是将16进制的数用字符数组保存,把数组首地址作为参数传递给函数,函数返回转换后的10进制整型数值。

详细说明,我写在备注里了,你看以参考。

#include <stdio.h>
#include <string.h>
int HtoD(char *a)//将16进制的数字用字符串保存,并将字符串首地址作为参数传递
{
    int num=0,i;
    for(i=0; i<strlen(a); i++)//迭代 迭代次数为a数组的长度    形参a是指针,初值是指向字符数组的首地址,也就是指向16进制数字的左边第1位
    {
        //每次迭代 取指针指向的地址值进行判断,同时指针不断往右移动
        if(*(a+i)>='0'&&*(a+i)<='9')//如果当前位是0~9的数字,那么总数值num累加同时前值*16(因为左边是高位,从高位往低位数,每多1位高位就*16)
            num = num*16 + *(a+i)-'0';
        else if(*(a+i)>='A'&&*(a+i)<='Z')//如果当前位是大写字母A~Z,转换成10进制数值,再累加
            num = num*16 + *(a+i)-'A'+10;
        else if(*(a+i)>='a'&&*(a+i)<='z')//如果当前位是小写字母a~z,转换成10进制数值,再累加
            num = num*16 + *(a+i)-'a'+10;
        else
            return -1;//表示输入错误的数
    }
    return num;
}
int main()
{
    char a[]="1F";
    printf("1F=%d",HtoD(a));  //这里我写了简单的调用,打印结果:1F=31
    return 0;
}


int HtoD(char *a){
int num = 0, i;
for (i = 0; i<strlen(a); i++){ //strlen(a)表示a数组的长度
if (*(a + i) >= '0'&&*(a + i) <= '9'){ //第一种情况字符为0~9,num*16升位,加上,字符减去基础值字符'0'获得对应的整数作为个位。
num = num * 16 + *(a + i) - '0';
}
else if (*(a + i) >= 'A'&&*(a + i) <= 'Z'){ //第二种情况字符为大写的A~Z,num*16升位,加上,字符减去基础值字符‘A’(因为‘B’是‘A’+ 1,‘C’是‘A’+ 2)获得对应的整数作为个位。
num = num * 16 + *(a + i) - 'A' + 10;
}
else if (*(a + i) >= 'a'&&*(a + i) <= 'z'){ //第二种情况字符为小写的a~z,num*16升位,加上,字符减去基础值字符‘a’获得对应的整数作为个位。
num = num * 16 + *(a + i) - 'a' + 10;
}
else{
return -1;//表示输入错误的数
}
}
return num;
}

int HtoD(char *a){
int num=0,i;
for(i=0; i<strlen(a); i++){ //扫描整个十六进制字符串
if(*(a+i)>='0'&&*(a+i)<='9'){ //如果第i位是数字字符
num = num*16 + *(a+i)-'0'; //*16是原有数字进一位,后面部分是把数字字符转为相应数值
}else if(*(a+i)>='A'&&*(a+i)<='Z'){ //如果第i位是十六进制字符
num = num*16 + *(a+i)-'A'+10; //把大写字母转为相应数值
}else if(*(a+i)>='a'&&*(a+i)<='z'){ //若是小写字母
num = num*16 + *(a+i)-'a'+10; //把小写字母转为相应数值
}else{
return -1;//表示输入错误的数,出错提示
}
}
return num; //返回转换后的结果
}

int
HtoD(char
*a){
int
num=0,i;
for(i=0;
i
='0'&&*(a+i)<='9'){
//如果第i位是数字字符
num
=
num*16
+
*(a+i)-'0';
//*16是原有数字进一位,后面部分是把数字字符转为相应数值
}else
if(*(a+i)>='A'&&*(a+i)<='Z'){
//如果第i位是十六进制字符
num
=
num*16
+
*(a+i)-'A'+10;
//把大写字母转为相应数值
}else
if(*(a+i)>='a'&&*(a+i)<='z'){
//若是小写字母
num
=
num*16
+
*(a+i)-'a'+10;
//把小写字母转为相应数值
}else{
return
-1;//表示输入错误的数,出错提示
}
}
return
num;
//返回转换后的结果
}

C语言_012_十六进制转十进制



  • c璇█16杩涘埗涓10杩涘埗鐨勮浆鎹
    绛旓細杩欎釜鍑芥暟鐨刬nt HtoD(char *a);灏辨槸灏16杩涘埗鐨鏁扮敤瀛楃鏁扮粍淇濆瓨锛屾妸鏁扮粍棣栧湴鍧浣滀负鍙傛暟浼犻掔粰鍑芥暟锛屽嚱鏁拌繑鍥杞崲鍚庣殑10杩涘埗鏁村瀷鏁板笺傝缁嗚鏄庯紝鎴戝啓鍦ㄥ娉ㄩ噷浜嗭紝浣犵湅浠ュ弬鑰冦俰nclude <stdio.h>#include <string.h>int HtoD(char *a)//灏16杩涘埗鐨勬暟瀛楃敤瀛楃涓蹭繚瀛橈紝骞跺皢瀛楃涓查鍦板潃浣滀负鍙傛暟浼犻...
  • 濡備綍鐢C璇█瀹炵幇鍗佸叚杩涘埗杞崲涓鍗佽繘鍒
    绛旓細include <stdio.h>void main(){ int he; int re=0; // 淇濆瓨杞崲涓10杩涘埗鐨缁撴灉 int k=16; // 16杩涘埗 int n=1; // 浣嶆潈 scanf("%d", &he); // 鎺ユ敹鐢ㄦ埛杈撳叆鐨16杩涘埗鏁帮紝涓嶅惈0x鍓嶇紑 while(he != 0) { re += (he%10)*n; // 鍙栧嚭鍚勪綅...
  • 鐢C璇█瀹炵幇16杩涘埗杞寲涓10杩涘埗?
    绛旓細C璇█绋嬪簭涓紝鍗佽繘鍒跺拰鍗佸叚杩涘埗瀹為檯鏄簰閫氱殑銆鍗佸叚杩涘埗鏁扮敱鏁板瓧0~9銆佸瓧姣岮~F锛堟垨a~f锛夌粍鎴愩傛妸鍗佸叚杩涘埗鏁版寜鏉冨睍寮銆佺浉鍔犲嵆寰楀崄杩涘埗鏁銆傜幇瀹炰腑鍗佸叚杩涘埗鏁板拰鍗佽繘鍒舵暟涓嶅彲浠ョ洿鎺ョ浉鍔狅紝濡傛槸鍦ㄧ數鑴戜笂鐨勮瘽鏄彲浠ョ殑锛屼綍绉嶈繘鍒舵暟鍦ㄧ數鑴戜笂閮芥槸浠ヤ簩杩涘埗鐨勫舰寮忚〃绀虹殑锛屽湪鐢佃剳缂栧啓绋嬪簭鏃舵槸鍙互鐩稿姞鐨勩傚崄杩涘埗鏁...
  • C璇█濡備綍瀹炵幇鍗佸叚杩涘埗杞崲鎴鍗佽繘鍒
    绛旓細C璇█瀹炵幇鍗佸叚杩涘埗杞崲鎴愬崄杩涘埗濡備笅锛氫緥濡傚皢鍗佸叚杩涘埗鏁板瓧 9FA8C 杞崲鎴愬崄杩涘埗锛9FA8C = 9脳164 + 15脳163 + 10脳162 + 8脳161 + 12脳160 = 653964锛堝崄杩涘埗锛夈備粠鍙冲線宸︾湅锛岀1浣嶇殑浣嶆潈涓 160=1锛岀2浣嶇殑浣嶆潈涓 161=16锛岀3浣嶇殑浣嶆潈涓 162=256锛岀4浣嶇殑浣嶆潈涓 163=4096锛岀5浣嶇殑...
  • 濡備綍鐢C璇█灏嗕竴涓鍗佸叚杩涘埗鏁板瓧杞崲涓鍗佽繘鍒
    绛旓細浣犲皢閭d釜鍗佸叚杩涘埗鐨勬暟瀛楄祴鍊肩粰涓涓猧nt鍨嬬殑鍙橀噺,灏辩洿鎺ヨ浆鍖栦负int鍨嬬殑浜銆傚鏋滅敤绋嬪簭瀹炵幇杩欎釜鍔熻兘鏄笉鐢ㄧ殑 璁$畻鏈轰細鐩存帴杞崲鐨勩傚彟澶 杈撳嚭鐨勬椂鍊欏彲浠ユ帶鍒惰緭鍑烘牸寮忋傝娉ㄦ剰涓婥璇█鐨刬nt鍨嬬殑闃鍊,涓嶈瓒婄晫銆 mozili1985 | 鍙戝竷浜2011-09-05 涓炬姤| 璇勮 0 4 鍝,褰撴椂娌$湅鎳傚晩! cz200808 | 鍙戝竷浜2012-12-...
  • 濡備綍鎶16杩涘埗鏁拌浆鍖涓10杩涘埗,c璇█缂栧啓
    绛旓細16杩涘埗鏁拌浆10杩涘埗鏁鍘熺悊锛氭煇16杩涘埗鏁板叡n浣嶏紝绗琻浣嶈〃绀轰负Xn銆杞崲鍚庣殑10杩涘埗鏁拌〃绀轰负Y銆俌 = Xn脳16^0 + Xn-1脳16^1 + Xn-2脳16^2 + 鈥︹ + X1脳16^n-1銆俰nclude <stdio.h>#include <math.h>#include <string.h>/* 浠绘剰杩涘埗鏁拌浆鍗佽繘鍒舵暟 *//* char *value : 鍏朵粬杩涘埗鏁 */...
  • c璇█涓鍗佸叚杩涘埗鎬庝箞杞崲鎴鍗佽繘鍒
    绛旓細杞崲鍚庣殑10杩涘埗鏁琛ㄧず涓篩 *//* Y = Xn*R^0 + Xn-1*R^1 + Xn-2*R^2 + 鈥︹ + X1*R^n-1 */void others2Decimal (char *value, int *result, int radix) { int digit,i,j;*result = 0;for (i=strlen(value)-1,j=0; i>=0; i--,j++) {if (value[i]>='0' &&...
  • c璇█涓16杩涘埗杞崲涓鍗佽繘鍒
    绛旓細鏈绠鍗曠殑浣跨敤scanf()鍑芥暟鍜宲rintf()鍑芥暟杩涜鏍煎紡杞崲,浠16杩涘埗鏍煎紡杈撳叆,鍐嶄互10杩涘埗鏍煎紡杈撳嚭銆 绋嬪簭浠g爜濡備笅: #include<stdio.h> int main() { int a=0; int i=0; scanf("%x",&a); printf("%d",a); return 0; } 杩愯缁撴灉: 鎵╁睍璧勬枡: scanf鍑芥暟涓巔rintf鍑芥暟鐨勭敤娉曞緢鍍,閮芥槸浠ユ牸寮忓寲鐨勫舰寮...
  • 濡備綍鐢C璇█瀹炵幇鍗佸叚杩涘埗杞崲涓鍗佽繘鍒.
    绛旓細);scanf("%d",&x); // %d 灏辨槸鎸10杩涘埗杈撳叆 printf("The hex is %x\n", x锛夛紱 // %x 灏辨槸鎸16杩涘埗杈撳叆 // c/c++ 鏈 itoa 鍑芥暟锛屽彲浠ユ妸鏁村瀷杞悇绉嶈繘鍒讹紝瀛樻斁浜庡瓧绗︽暟缁剆閲岋紝// 渚嬪 2杩涘埗锛 itoa(x,s,2); 8杩涘埗锛 itoa(x,s,8); 16 杩涘埗锛 itoa(x,s,16);...
  • 鐢C璇█灏16杩涘埗鏁拌浆鍖涓10杩涘埗鏁 16杩涘埗鏁颁互瀛楃涓插舰寮忚緭鍏 鏈濂借繍鐢...
    绛旓細鐢╥toa鍑芥暟锛堥渶瑕乻tdlib.h澶存枃浠讹級锛屽亣濡傝鎶奱瀛樿繘瀛楃鏁扮粍str[]涓紝鍒欒繖鏍锋搷浣渋toa(a, str, 16)銆傜涓変釜鍙傛暟鏄杩涘埗鏁銆傚鏋滀綘瑕佺敤浠g爜瀹炵幇锛岄偅鎴戝氨鍐欎釜鍑芥暟缁欎綘鍚э細include <stdio.h> const char HexNum[] = "0123456789ABCDEF";void subDecToHex(int dec, char *&str){if(!dec) return...
  • 扩展阅读:10 16 化成10进制 ... 16转10进制在线转换 ... 16进制在线转换器 ... 1-100二进制对照表 ... c语言16进制转10怎么算 ... 16进制转换10进制c语言 ... 10进制转16计算器 ... 16进制转换器 ... 16进制数如何转成10进制c ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网