单片机C语言中16进制数转10进制数的计算公式?比如a=0x7f,用一个公式怎么转化为10进制数 如何用C语言将一个16进制数转换成10进制数,要求用函数。

\u768451\u5355\u7247\u673a\u4e2dc\u8bed\u8a00\u4e2d\u5982\u4f55\u5c06\u5341\u516d\u8fdb\u5236\u6570\u8f6c\u5316\u4e3a\u5341\u8fdb\u5236

16\u8fdb\u5236\u5c31\u662f\u902216\u8fdb1\uff0c\u4f46\u6211\u4eec\u53ea\u67090~9\u8fd9\u5341\u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6211\u4eec
\u7528a\uff0cb\uff0cc\uff0cd\uff0ce\uff0cf\u8fd9\u4e94\u4e2a\u5b57\u6bcd\u6765\u5206\u522b\u8868\u793a10\uff0c11\uff0c12\uff0c13\uff0c14\uff0c15
\u3002\u5b57\u6bcd\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u3002
\u5341\u516d\u8fdb\u5236\u6570\u7684\u7b2c0\u4f4d\u7684\u6743\u503c\u4e3a16\u76840\u6b21\u65b9\uff0c\u7b2c1\u4f4d\u7684\u6743\u503c\u4e3a16\u76841\u6b21\u65b9\uff0c\u7b2c2\u4f4d\u7684\u6743\u503c\u4e3a16\u76842\u6b21\u65b9\u2026\u2026
\u6240\u4ee5\uff0c\u5728\u7b2cn\uff08n\u4ece0\u5f00\u59cb\uff09\u4f4d\u4e0a\uff0c\u5982\u679c\u662f\u662f\u6570
x
\uff08x
\u5927\u4e8e\u7b49\u4e8e0\uff0c\u5e76\u4e14x\u5c0f\u4e8e\u7b49\u4e8e
15\uff0c\u5373\uff1af\uff09\u8868\u793a\u7684\u5927\u5c0f\u4e3a
x
*
16\u7684n\u6b21\u65b9\u3002
\u5047\u8bbe\u6709\u4e00\u4e2a\u5341\u516d\u8fdb\u6570
2af5,
\u90a3\u4e48\u5982\u4f55\u6362\u7b97\u621010\u8fdb\u5236\u5462\uff1f
\u3000
\u7528\u7ad6\u5f0f\u8ba1\u7b97\uff1a
\u3000
2af5\u6362\u7b97\u621010\u8fdb\u5236:
\u3000
\u7b2c0\u4f4d\uff1a
5
*
16
0
=
5
\u7b2c1\u4f4d\uff1a
f
*
16
1
=
240
\u7b2c2\u4f4d\uff1a
a
*
16
2
=
2560
\u7b2c3\u4f4d\uff1a
2
*
16
3
=
8192
\uff0b
-------------------------------------

10997
\u76f4\u63a5\u8ba1\u7b97\u5c31\u662f\uff1a
5
*
16
0

+
f
*
16
1
+
a
*
16
2
+
2
*
16
3
=
10997
(\u522b\u5fd8\u4e86\uff0c\u5728\u4e0a\u9762\u7684\u8ba1\u7b97\u4e2d\uff0ca\u8868\u793a10\uff0c\u800cf\u8868\u793a15)
\u3000
\u73b0\u5728\u53ef\u4ee5\u770b\u51fa\uff0c\u6240\u6709\u8fdb\u5236\u6362\u7b97\u621010\u8fdb\u5236\uff0c\u5173\u952e\u5728\u4e8e\u5404\u81ea\u7684\u6743\u503c\u4e0d\u540c\u3002
\u5047\u8bbe\u6709\u4eba\u95ee\u4f60\uff0c\u5341\u8fdb\u6570
1234
\u4e3a\u4ec0\u4e48\u662f
\u4e00\u5343\u4e8c\u767e\u4e09\u5341\u56db\uff1f\u4f60\u5c3d\u53ef\u4ee5\u7ed9\u4ed6\u8fd9\u4e48\u4e00\u4e2a\u7b97\u5f0f\uff1a
1234
=
1
*
10
3
+
2
*
10
2
+
3
*
10
1
+
4
*
10
0

\u6211\u81ea\u5df1\u7f16\u5199\u7684\u4e00\u4e2a\u51fd\u6570\u3002
\u697c\u4e0a\u7684\u6839\u672c\u6ca1\u8fbe\u5230\u76ee\u7684\u3002\u8d4b\u503c\u8bed\u53e5\u5b9e\u73b0\u7eaf\u7cb9\u662f\u6295\u673a\u53d6\u5de7\u3002\u8003\u8bd5\u80af\u5b9a\u4e3a0\u5206\u3002
\u4e0b\u9762\u662f\u7a0b\u5e8f\u6e90\u4ee3\u7801
#include
void
shuchu(int
c)
//\u8fd9\u4e2a\u51fd\u6570\u4e0d\u7528\u7f16\u5199\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728zhs\u51fd\u6570\u91cc\u9762\u7528\u8bed\u53e5\u5199\u7684//
{
c=c%16;
if(c>=0&&c<=9)
{c=c+48;
putchar(c);
}
else
{
c=c+87;
putchar(c);
}
}
void
zhs(int
c)
{
if(c<=15)
shuchu(c);
else
{
zhs(c/16);
shuchu(c);
}
}
void
main()
{
int
n;
printf("please
enter
a
number:\n");
scanf("%d",&n);
printf("zhuan
huan
hou
de
16jinzhi
shushi
:\n");
zhs(n);
printf("\n");
}
\u4e0d\u597d\u610f\u601d\u5f04\u9519\u4e86\u8fd9\u662f\u4e00\u4e2a\u5341\u8fdb\u5236\u8f6c\u6362\u523016\u8fdb\u5236\u7684\u95ee\u9898\u3002\u6211\u91cd\u65b0\u5e2e\u4f60\u5199\u4e00\u4e2a\u3002

用C语言写程序,也不用转换的。C语言就可以直接写十进制数的,内部是什么可以不用考虑。
只是在显示时,按十进制数显示时,取出百,十,个位就行了,也不用先转换的。
你这样好像是转换了,可转换后的数,在内部还是十六进制数,那当然是错的。
所以,要根据需要进行分离或者转换。

你的办法不行。
准确地说,要把单元里的二进数整转换成“十进制字符串”?
有现成的转换函数,

b=(a/16)*16+a%16

b=(a/16)*16+a%16 可以的

  • 鍗曠墖鏈鎶16杩涘埗杞负10杩涘埗
    绛旓細绋嬪簭鍐呴儴鏃犻渶杞崲锛屽彧鏄啓娉曚笉鍚岃屽凡锛鍗曠墖鏈鍏ㄦ槸鎸夌収浜杩涘埗澶勭悊鏁版嵁鐨銆
  • 51鍗曠墖鏈篊璇█閲 鎬庢牱灏16杩涘埗 鐩存帴鍖栨垚 10杩涘埗
    绛旓細printf("璇疯緭鍏ヤ竴涓崄杩涘埗鏁a= ");scanf("%d",&a);printf("璇疯緭鍏ヤ竴涓繘鍒舵暟n= ");scanf("%d",&n);if(n==16)q=tentoBOH(a,n);else p=tentoBOH(a,n);printf("杈撳嚭姝f暣鏁%d鐨%d杩涘埗涓猴細",a,n);if(n==16)for(i=0;i<count;i++)printf("%c",*(q+i));else for(i=...
  • 鍗曠墖鏈篊璇█涓16杩涘埗鏁拌浆10杩涘埗鏁扮殑璁$畻鍏紡?姣斿a=0x7f,鐢ㄤ竴涓叕寮...
    绛旓細鐢C璇█鍐欑▼搴忥紝涔熶笉鐢杞崲鐨銆侰璇█灏卞彲浠ョ洿鎺ュ啓鍗佽繘鍒舵暟鐨勶紝鍐呴儴鏄粈涔堝彲浠ヤ笉鐢ㄨ冭檻銆傚彧鏄湪鏄剧ず鏃讹紝鎸夊崄杩涘埗鏁版樉绀烘椂锛屽彇鍑虹櫨锛屽崄锛屼釜浣嶅氨琛屼簡锛屼篃涓嶇敤鍏堣浆鎹㈢殑銆備綘杩欐牱濂藉儚鏄浆鎹簡锛屽彲杞崲鍚庣殑鏁帮紝鍦ㄥ唴閮ㄨ繕鏄鍗佸叚杩涘埗鏁锛岄偅褰撶劧鏄敊鐨勩傛墍浠ワ紝瑕佹牴鎹渶瑕佽繘琛屽垎绂绘垨鑰呰浆鎹
  • 16杩涘埗杞10杩涘埗鎬庝箞绠(鍘熺悊)
    绛旓細16杩涘埗鏁拌浆10杩涘埗鏁扮殑鍘熺悊锛1000=1X16^3锛16鐨3娆℃柟锛+0X16^2锛16鐨2娆℃柟锛+0X16锛16鐨1娆℃柟锛+0X1锛16鐨0娆℃柟锛=4096銆侫 = 10锛 B = 11,锛C =12锛孌=13锛孍=14锛孎= 15銆侳FF=15*(16^2) + 15*(16^1) + 15*(16^0) = 4095銆
  • 璁捐8浣16杩涘埗鏁拌浆10杩涘埗绋嬪簭銆 8051鍗曠墖鏈缂栫▼
    绛旓細姣斿鍗佸叚杩涘埗鏁num:num=num/16*10+num%16鍘熺悊鏂规硶灏辨槸鎶婄浉搴斾綅锛鍗佽繘鍒涓釜浣嶃佸崄浣嶈繖鏍风殑浣嶏級鍒嗙鍑烘潵锛屽垎鍒箻浠杞寲鐩爣杩涘埗鏁扮殑杩涚巼涔嬪拰銆俷um/16涓哄崄鍏繘鍒堕珮浣嶏紝num%16涓哄崄鍏繘鍒朵綆浣嶏紝鍒嗗埆涔樹互鍗佽繘鍒惰繘鐜囦箣鍜宯um/16*10+num%16*1
  • 鍗曠墖鏈 濡備綍灏鍗佸叚浣嶈浆鎴鍗佽繘鍒鏄剧ず鍦↙ED涓
    绛旓細uint data LEDGE,LEDSH,LEDBAI,LEDQIAN;uint data TIME=3756;LEDQIAN=TIME/1000;//鍙栧崈浣 LEDBAI=(TIME%1000)/100;//鍙栫櫨浣 LEDSHI=(TIME%100)/10;//鍙栧崄浣 LEDGE=TIME%10;//鍙栦釜浣 鐒跺悗閫氳繃P0鍙d緷娆¢夋嫨4涓狶ED鏁扮爜绠★紝鍚屾椂鎶婄浉搴鏁版嵁閫佽嚦娈电爜浣嶃傛敞鎰忛夋嫨2涓暟鐮佺涔嬮棿鐨勫埛鏂版椂闂磋澶т簬...
  • 姹51鍗曠墖鏈鎶4浣16杩涘埗鏁拌浆鎴10杩涘埗鏁鐨鏂规硶
    绛旓細DA A ;鍗佽繘鍒璋冩暣锛屽彉鎴怋CD鐮 MOV R4, A MOV A, R3 ADDC A, R3 DA A MOV R3, A MOV A, R2 ADDC A, R2 MOV R2, A DJNZ R5, LOOP ;鍏杞崲鍗佸叚浣嶆暟 ;---鑷虫锛屽凡缁忔妸TH1 TL1涓鐨勬暟瀛锛岃浆鎹㈡垚BCD鐮侊紝閫佸埌浜哛2 R3 R4銆;---涓嬮潰锛屽垎鍒瓨...
  • 51鍗曠墖鏈鎶4浣16杩涘埗鏁拌浆鎴10杩涘埗鏁伴棶棰
    绛旓細鍦ㄨ摑鑹查儴鍒嗙殑鍓嶉潰锛屾湁涓娈靛乏绉荤殑绋嬪簭銆備粠 R0 绉诲嚭鏉ョ殑涓滆タ锛屽湪钃濊壊閮ㄥ垎涓紝灏卞姞鍏ュ埌 R4 浜嗐
  • 16杩涘埗杞10杩涘埗鎬庝箞绠?
    绛旓細16杩涘埗鏁拌浆10杩涘埗鏁扮殑鍘熺悊锛1000=1X16^3锛16鐨3娆℃柟锛+0X16^2锛16鐨2娆℃柟锛+0X16锛16鐨1娆℃柟锛+0X1锛16鐨0娆℃柟锛=4096銆侫 = 10锛 B = 11,锛C =12锛孌=13锛孍=14锛孎= 15銆侳FF=15*(16^2) + 15*(16^1) + 15*(16^0) = 4095銆
  • 16杞10杩涘埗
    绛旓細鎶婂崄杩涘埗鏁拌浆鎹涓鍗佸叚杩涘埗鏁鏃讹紝灏嗗熀鏁2杞崲鎴16灏卞彲浠ヤ簡. 渚嬶細灏25杞崲涓哄崄鍏繘鍒舵暟 25梅16=1 浣欐暟9 1梅16=0 浣欐暟1 鎵浠25=(19)16 3.浜岃繘鍒舵暟涓庡崄鍏繘鍒舵暟涔嬮棿鐨勮浆鎹 鐢变簬4浣嶄簩杩涘埗鏁版伆濂芥湁16涓粍鍚堢姸鎬侊紝鍗1浣嶅崄鍏繘鍒舵暟涓4浣嶄簩杩涘埗鏁版槸涓涓瀵瑰簲鐨.鎵浠ワ紝鍗佸叚杩涘埗鏁颁笌浜岃繘鍒舵暟鐨勮浆鎹㈡槸...
  • 扩展阅读:16进制计算器在线 ... 16进制码对照表 ... 单片机16进制字母表 ... 16进制转换器 ... 16进制在线转换工具 ... 怎么求一个汉字的16进制 ... 汉字转16进制对照表 ... 16进制对照表0x ... 16进制内码转换汉字在线 ...

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