58進制轉換工具


二到十
十到十六
十到二
十六到十


//二進制轉換十進制

10111B=1x24 + 0x23 +1 x22 +1 x21 +1 x20= 23 
十六進制轉換十進制
125H=1×162+2×161+5×160=293D


十進制轉換二進制的方法,不停的除以2,直到商為0,將每一步得到的余數倒着串起來即可
50D=
50 ÷ 2 =25 //余數為0
25 ÷ 2 =12 //余數為1
12 ÷ 2 =6 //余數為0
6 ÷ 2 =3 //余數為0
3 ÷ 2 =1 //余數為1
1 ÷ 2 =0 //余數為1

十六進制轉換十進制
125H=1×162+2×161+5×160=293D

十進制轉換十六進制
293D=
293 ÷ 16 = 18  //余數5
18 ÷ 16 = 1  //余數2
1
÷ 16 =0 //余數為1

125H=293D







void 二到十(char *p_二進制, char * p_十進制) {
 int l_十進制 = 0;
 int l_次方 = strlen(p_二進制) - 2;
 for (size_t i = 0; i < strlen(p_二進制) - 1; i++) {
  l_十進制 = l_十進制 + (p_二進制[i] - 48)*pow(2, l_次方);
  l_次方 = l_次方 - 1;
 }

 itoa(l_十進制, p_十進制, 10);
}

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void 十到二(char *p_輸入數, char *p_進制) {
//50 ÷ 2 = 25 //余數為0
//25 ÷ 2 = 12 //余數為1
//12 ÷ 2 = 6 //余數為0
//6 ÷ 2 = 3 //余數為0
//3 ÷ 2 = 1 //余數為1
//1 ÷ 2 = 0 //余數為1
int l_v1 = atoi(p_輸入數);
int l_v2;
int 結果[10] = { 0 };
int 索引=0;
while (l_v1 > 0) {
結果[索引] = l_v1 % 2;
l_v1 = l_v1 / 2;
索引 = 索引 + 1;
}
for (size_t i = 0; i <= 索引/2; i++)
{
l_v2 = 結果[i];
結果[i] = 結果[索引-i];
結果[索引 - i] = l_v2;
}
for (size_t i = 0; i < 索引+1; i++)
{
printf("%d", 結果[i]);
}

}
void main() {
char 進制數[100] = { 0 };
char 進制[10] = { 0 };
printf("請輸入進制數");
fgets(進制數, sizeof(進制數), stdin);
進制數[strlen(進制數) - 1] = 0;
printf("請輸入進制");
fgets(進制, sizeof(進制), stdin);
進制[strlen(進制) - 1] = 0;
if (strcmp(進制, "2") == 0) {
十到二(進制數, 進制);
}

 

system("pause");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM