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. 201871030139-于泽浩 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030139-于泽浩 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 软件工程结对项目 ...

  2. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...

  3. ARM NEON指令集优化理论与实践

    ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...

  4. NVIDIA安倍架构

    NVIDIA安倍架构 NVIDIA Ampere ArchitectureNVIDIA The Heart of the World's Highest-Performing, Elastic Dat ...

  5. LED液晶与OLED:电视显示技术比较

    LED液晶与OLED:电视显示技术比较 LED LCD vs. OLED: TV display technologies compared 到目前为止,LED-LCD是主导的电视显示技术,特别是在等 ...

  6. 孟老板 BaseAdapter封装 (三) 空数据占位图

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  7. 编译原理-确定有穷自动机(deterministic finite automata ,DFA)

    是一个五元组 M=(S,∑,f,S0,F) 其中 S:有穷状态集 ∑:输入字母表(有穷) f:状态转换函数.f(S,a)=S' 是单值部分映射,每个状态面临一个输入符号时,转入的后继状态是确定的. S ...

  8. Pytorch线性规划模型 学习笔记(一)

    Pytorch线性规划模型 学习笔记(一) Pytorch视频学习资料参考:<PyTorch深度学习实践>完结合集 Pytorch搭建神经网络的四大部分 1. 准备数据 Prepare d ...

  9. 【NX二次开发】Block UI 目录

    Block UI 目录  基本   标签/位图   切换开关   枚举   字符串   多行字符串   操作按钮   列表框   分割线   对象颜色选择器   RGB颜色选择器   绘图区   图层 ...

  10. Java安全之反序列化回显与内存马

    Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如 ...