16进制数4321转10进制:
原来方法 =4*16^3+3*16^2+2*16^1+1*16^0
    =4*16^3+3*16^2+2*16^1+1
    =16*(4*16^2+3*16^1+2)+1
    =16*(16*(4*16^1+3)+2)+1
    =16*(16*(16*(4+0)+3)+2)+1

#include <stdio.h>
#include <math.h>
#define MAXCHAR 101 /*最大允许字符串长度*/
int char_to_num(char ch); /*返回字符对应的数字*/
char num_to_char(int num); /*返回数字对应的字符*/
long source_to_decimal(char temp[], int source); /*返回由原数转换成的10进制数*/
long source_to_decimala(char temp[], int source); /*返回由原数转换成的10进制数*/
int decimal_to_object(char temp[], long decimal_num, int object); /*返回转换成目标数制后字符数组的长度*/
void output(char temp[], int length); /*将字符数组逆序打印*/
int main()
{
int source; /*存储原数制*/
int object; /*存储目标数制*/
int length; /*存储转换成目标数制后字符数组的长度*/
long decimal_num; /*存储转换成的10进制数*/
char temp[MAXCHAR]; /*存储待转换的数值和转换后的数值*/
int flag = 1; /*存储是否退出程序的标志*/
while(flag) /*利用输入的flag值控制循环是否结束*/
{
printf("转换前的数是:");
scanf("%s", temp);
printf("转换前的数制是:");
scanf("%d", &source);
printf("转换后的数制是:");
scanf("%d", &object);
printf("转换后的数是:");
decimal_num = source_to_decimala(temp, source);
length = decimal_to_object(temp, decimal_num, object);
output(temp, length);
printf("继续请输入1,否则输入0:\n");
scanf("%d", &flag);
}
return 0;
}
/*将字符转换成数字*/
int char_to_num(char ch)
{
if(ch>='0' && ch<='9')
return ch-'0'; /*将数字字符转换成数字*/
else
return ch-'A'+10; /*将字母字符转换成数字*/
}
char num_to_char(int num)
{
if(num>=0 && num<=9)
return (char)('0'+num-0); /*将0~9之间的数字转换成字符*/
else
return (char)('A'+num-10); /*将大于10的数字转换成字符*/
}
long source_to_decimal(char temp[], int source)
{
long decimal_num = 0; /*存储展开之后的和*/
int length;
int i;
for( i=0; temp[i]!='\0'; i++ );
length=i;
for( i=0; i<=length-1; i++ ) /*累加*/
decimal_num = (decimal_num*source) + char_to_num(temp[i]);
return decimal_num;
}
long source_to_decimala(char temp[], int source)
{
long decimal_num = 0; /*存储展开之后的和*/
int length;
int i;
for( i=0; temp[i]!='\0'; i++ );
length=i;
for( i=0; i<=length-1; i++ ) /*累加*/
{
decimal_num = decimal_num + char_to_num(temp[i])*pow(source,length-1-i);
printf("%d ",temp[i]);
}
printf("\n%d\n",decimal_num);
return decimal_num;
}
int decimal_to_object(char temp[], long decimal_num, int object)
{
int i=0;
while(decimal_num)
{
temp[i] = num_to_char(decimal_num % object); /*求出余数并转换为字符*/
decimal_num = decimal_num / object; /*用十进制数除以基数*/
i++;
}
temp[i]='\0';
return i;
}
void output(char temp[], int length)
{
int i;
for( i=length-1; i>=0; i--) /*输出temp数组中的值*/
printf("%c", temp[i]);
printf("\n");
}

C语言:进制转化的更多相关文章

  1. c语言进制转化

    #include <stdio.h> // 进制转化 int main(void) { ; ; int i3 = 0x32C; printf( printf( printf("十 ...

  2. 【风马一族_C】进制转化

    #include "stdio.h" #include "Math.h" #define number 50 //设置数组的长度 int num10; //十进 ...

  3. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL   在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Li ...

  4. HDU5050:Divided Land(大数的进制转化与GCD)

    题意:给定大数A和B,求gcd.所有数字都是二进制. 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出. 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化 ...

  5. python数据结构:进制转化探索

    *********************************第一部分*************************************************************** ...

  6. 《N诺机试指南》(五)进制转化

    进制转化类题目类型: 代码详解及注释解答:  //进制转化问题 #include <bits/stdc++.h> using namespace std; int main(){ // 1 ...

  7. P1017进制转化

    P1017进制转化 也不知道为啥,这么简单的题困扰了我这么长时间 #include<cstdio> using namespace std; int m; //被除数= 除数*商 + 余数 ...

  8. 基于visual Studio2013解决C语言竞赛题之1066进制转化

        题目 解决代码及点评 /************************************************************************/ /* ...

  9. python进制转化函数,10进制字符串互转,16进制字符串互转

    来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...

随机推荐

  1. Go语言网络通信---TCP通信上传一个小文件

    server: package main import ( "fmt" "net" "os" ) func SHandleError(err ...

  2. .NET平台系列17 .NET5中的ARM64性能

    系列目录     [已更新最新开发文章,点击查看详细] .NET团队使.NET 5大大提高了常规性能和ARM64性能.在<.NET5中的性能改进>博客中可以查看总体改进情况.在这篇文章中, ...

  3. L4自动驾驶技术

    L4自动驾驶技术 一.SAE的五个级别分别是: L0:驾驶员完全掌控车辆,无任何自动化能力. L1:自动系统有时能够辅助驾驶员完成某些驾驶任务.比如高速自动巡航(自动认知所在车道),和一些驾驶辅助功能 ...

  4. ST为飞行时间传感器增加了多目标测距

    ST为飞行时间传感器增加了多目标测距 ST adds multi-object ranging to time-of-flight sensors STMicroelectronics已经扩展了其Fl ...

  5. 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代

    Linkerd 提供了许多功能,如:自动 mTLS.自动代理注入.分布式追踪.故障注入.高可用性.HTTP/2 和 gRPC 代理.负载均衡.多集群通信.重试和超时.遥测和监控.流量拆分(金丝雀.蓝/ ...

  6. 【NX二次开发】不健全的双击按钮。

    为什么说不健全,是因为 双击按钮时会先运行单击事件,这个后面再解决.但是模仿某公司的图层操作工具是没有问题了,因为这个工具运行双击事件时本来就需要运行单击事件,不仔细看容易被唬住. 图层操作工具(双击 ...

  7. Spring Cloud Alibaba(15)---Sleuth+Zipkin

    SpringCloudAlibaba整合Sleuth+Zipkin 有关Sleuth之前有写过两篇文章 Spring Cloud Alibaba(13)---Sleuth概述 Spring Cloud ...

  8. Servlet--核心内容汇总

    Servlet汇总 因为看公司代码,有个cookie+jwt.Token登录验证接口,于是回顾下servlet.cookie.session.前后端分离restful.jwt.token相关内容.虽然 ...

  9. jdk,jre.jvm三者的关系

    jdk>jre>jvm jdk=jre+java的开发工具(包括java.exe,javac.exe.javadoc.exe) jre=jvm+java核心类库

  10. 04-拉格朗日对偶问题和KKT条件

    04-拉格朗日对偶问题和KKT条件 目录 一.拉格朗日对偶函数 二.拉格朗日对偶问题 三.强弱对偶的几何解释 四.鞍点解释 4.1 鞍点的基础定义 4.2 极大极小不等式和鞍点性质 五.最优性条件与 ...