实现十六进制间的任意转换
来源:互联网 发布:一体化大数据宣传片 编辑:程序博客网 时间:2024/06/05 03:21
一、十六进制间的任意转换:
我主要的思路分两个步骤:
1、把x进制数转换成十进制数
2、再把该十进制数转换成我们需要得到的m进制数
二、代码(func.c、func.h、main.c)
1、func.c
#include "func.h"/*十进制转m进制*/int decim(int n, int m, int buf[]){int s;bzero(buf, sizeof(buf));s=0;while(n>=m){buf[s++] = (n - (n/m)*m);n /= m;}buf[s]=n;return s+1;}/*m进制转十进制*/int C_decim(char n[], int m){int i,j,len,s,flag,num;s=0;flag=0;len=strlen(n);for(i=len-1; i>=0; i--){num = 1;for(j=0; j<flag; j++){num *= m;}if((n[i] >= '0') && (n[i] <= '9')){s += ((n[i]-'0')*num);}else if((n[i] >= 'a') && (n[i] <= 'f')){s += ((n[i]-'a'+10)*num);}else if((n[i] >= 'A') && (n[i] <= 'F')){s += ((n[i]-'A'+10)*num);}flag++;}return s;}char str1[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};char str2[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};/*判断数据的正确与否*/int judge(int x, int m, char n[]){int i,len;if(x<2 || m<2 || x>16 ||m>16){return -1;}len=strlen(n);for(i=0; i<len; i++){if(m > 9){if('0' > n[i] || n[i] > ('a'+m-10) || (n[i] > '9' && n[i] < 'A') || \ (n[i] > ('A'+m-10)&&(n[i] < 'a'))){return -1;}}else{if('0' > n[i] || ('0'+m) <= n[i] ){return -1;}}}return 0;}
2、func.h
#include <stdio.h>#include <string.h>/*十进制转m进制*/int decim(int , int , int *);/*m进制转十进制*/int C_decim(char * , int );int judge(int , int , char *);
3、main.c
#include "func.h"char str[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};int main(void){int i ,temp ,k ,x ,m ,buf[64];char n[64];while(1){bzero(n, sizeof(n));printf("\n十六进制间的任意转换(USAGE:x n m)\nx:输入的为几进制数;n:输入的数;m:将要转换成几进制数\n>>>>>>输入小于2的数退出<<<<<<\n");scanf("%d", &x);if(x < 2){return 0;}scanf("%s", n);scanf("%d", &m);/*判断输入数据的正确与否*/if(-1 == judge(x, m, n)){printf("input error!\n");continue;}/*转换成十进制*/temp=C_decim(n, x);/*转换成需要的进制*/k=decim(temp, m, buf);printf("%d进制数%s转换成%d进制数的结果: ", x, n, m);for(i=k-1; i>=0; i--){printf("%c", str[buf[i]]);}printf("\n\n");}return 0;}
阅读全文
0 0
- 实现十六进制间的任意转换
- (C小程序)转换任意十六进制数的…
- 十六进制以内任意进制之间的转换
- Java实现十六进制,八进制之间的转换
- 将任意数转换为十六进制
- 最终版任意转换二进制、八进制、十六进制
- C#实现转换十六进制
- C#实现转换十六进制
- 任意进制转换的递归实现
- 二进制至三十六进制之间的任意转换-C语言
- [VB]十进制/十六进制/二进制 间的转换
- 二进制,八进制,十六进制间的转换
- 字节数组与十六进制间的转换
- 字节数组 与 十六进制间的转换
- 字节数组 与 十六进制间的转换
- 字节数组 与 十六进制间的转换
- 十六进制mac 的转换
- 十六进制、十进制的转换
- POJ 2635 The Embarrassed Cryptographer【数论,千进制,高精度求模+同余模定理】
- java相关基础知识
- ThreadPoolExecutor机制
- 编程学习感悟
- leetcode 83. Remove Duplicates from Sorted List
- 实现十六进制间的任意转换
- Samba服务器配置
- rpmdb损坏的修复方法
- 4对象的组合
- 非注解情况下的handle(5)
- ORACLE内置函数大全补充(列合并函数)
- git 命令
- The Domino Effect UVA
- 在IIS中设置禁止访问某个页面