C/C++语言实现二、八、十、十六进制的转换

本文分享了一套纯C语言实现的进制转换代码,包括十进制与二进制、八进制、十六进制之间的相互转换。通过求模取余法和位运算,展示了如何将不同进制的数转换为十进制,并提供了VS2017环境下可运行的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纯C语言实现进制之间的输入转换输出,下附代码只是实现了数据的显示,若要更改使其返回转换后的数值也是比较容易的。个人感觉C++编写会更加容易一些,烦请读者自己更改。其中有部分繁琐冗杂的地方还请大家见谅Orz

核心思想:

1)求模取余法实现十进制对其他进制的转换

2)通过字符数组存储要转换的二/八/十六进制数据,再逐位存储到整型数组当中

3)通过位数与幂的关系完成对十进制的转换

附代码:


1.C语言原版

#include<stdio.h>

void DecBinary();     // 十进制-->二进制
void DecOct();        // 十进制-->八进制
void DecHex();        // 十进制-->十六进制
void BinaryDec();     // 二进制-->十进制
void OctDec();        // 八进制-->十进制
void HexDec();        // 十六进制-->十进制
int input();          // 十进制转换的输入重复代码封装为一个函数
int exp(int n);       // 十进制转换二进制的幂计算
int exp1(int n);      // 十进制转换八进制的幂计算
int exp2(int n);      // 十进制转换十六进制的幂计算
void menu();

int main()
{
	int choice = 0;
	do
	{
		menu();
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
			DecBinary();
			break;
		case 2:
			DecOct();
			break;
		case 3:
			DecHex();
			break;
		case 4:
			BinaryDec();
			break;
		case 5:
			OctDec();
			break;
		case 6:
			HexDec();
			break;
		case 0:
			break;
		default:
			printf("选项无效.\n");
			break;
		}
	} while (choice != 0);
	getchar();
	//std::cin.get();
	return 0;
}

void menu()
{
	printf("-------------------------------------\n");
	printf("|    1) 十进制   -->  二进制        |\n");
	printf("|    2) 十进制   -->  八进制        |\n");
	printf("|    3) 十进制   -->  十六进制      |\n");
	printf("|    4) 二进制   -->  十进制        |\n");
	printf("|    5) 八进制   -->  十进制        |\n");
	printf("|    6) 十六进制 -->  十进制        |\n");
	printf("|    0) 退出                        |\n");
	printf("-------------------------------------\n");
	printf("Please input the choice:\n");
}

int input()
{
	int n;
	printf("请输入需要转换的十进制数: ");
	scanf("%d", &n);
	return n;
}

int exp(int n)
{
	int result = 1;
	for (int i = 0; i < n; i++)
	{
		result *= 2;
	}
	return result;
}

int exp1(int n)
{
	int result = 1;
	for (int i = 0; i < n; i++)
	{
		result *= 8;
	}
	return result;
}

int exp2(int n)
{
	int result = 1;
	for (int i = 0; i &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值