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");
}

 

posted @ 2017-11-25 20:47  随意就好欧巴  阅读(2266)  评论(0编辑  收藏  举报