#include <stdio.h>
#include <stdlib.h>
void trans(char strnum[],int n);
int strToInt(char strnum[],int hex);
char *intToX(int num,int hex);
int main(int argc,char argv[]){
#if 1
char *nump;
char *p = malloc(13);
nump = p;
char c;
int size = 0;
printf("请输入你要转换的数:\n");
while((c = getchar()) != '\n'){
*p = c;
p++;
size++;
}
//printf("nump:%s,size:%d\n",nump,size);
//转换
trans(nump,size);
#endif
//int num = 0;
//scanf("%d",&num);
//printf("After:%s\n",intToX(num,2));
exit(0);
}
/**
*进制转换:将输入的字符串类型的数转换成另三种进制的数。只支持2、8、10、16三种进制的相互转换
*各进制数后面加(进制)表示,如2进制:0010(2)
*/
void trans(char strnum[],int n){
//保存进制
char type[3] = {0};
//保存需转换的数
char num[9] = {0};
int i;
for(i = 0;i < n;i++){
if(strnum[i] != '(')
num[i] = strnum[i];
else if(strnum[i] = '('){
type[0] = strnum[i + 1];
if(strnum[i + 2] != ')'){
type[1] = strnum[i + 2];
i = i + 4;
}else{
i = i + 3;
}
}
}
//printf("进制:%s;数:%s\n",type,num);//%s输出默认至发现'\0'结束
//将字符和进制都转成10进制整数
int intType = strToInt(type,10);
int intNum = strToInt(num,intType);
//printf("整数:num=%d,type=%d\n",intNum,intType);
#if 1
char *rp;
if(intType == 2){
printf("10进制:%d\n",intNum);
rp = intToX(intNum,2);
printf("2进制:%s\n",rp);
rp = intToX(intNum,8);
printf("8进制:%s\n",rp);
rp = intToX(intNum,16);
printf("16进制:%s\n",rp);
}else if(intType == 8){
printf("10进制:%d\n",intNum);
rp = intToX(intNum,2);
printf("2进制:%s\n",rp);
rp = intToX(intNum,8);
printf("8进制:%s\n",rp);
rp = intToX(intNum,16);
printf("16进制:%s\n",rp);
}else if(intType == 10){
printf("10进制:%d\n",intNum);
rp = intToX(intNum,2);
printf("2进制:%s\n",rp);
rp = intToX(intNum,8);
printf("8进制:%s\n",rp);
rp = intToX(intNum,16);
printf("16进制:%s\n",rp);
}else if(intType == 16){
printf("10进制:%d\n",intNum);
rp = intToX(intNum,2);
printf("2进制:%s\n",rp);
rp = intToX(intNum,8);
printf("8进制:%s\n",rp);
rp = intToX(intNum,16);
printf("16进制:%s\n",rp);
}
#endif
}
/*
*字符转成整数
*参数:strnum,需转换的字符;hex,进制
*
*/
int strToInt(char strnum[],int hex){
int value = 0;
char *p;
p = strnum;
while(*p != '\0'){
//16进制
if(hex == 16){
if(*p >= '0' && *p <= '9'){
value = value * hex + *p - '0';
}else{
value = value * hex + *p - 'a' + 10;
}
}else{
//其他进制
value = value * hex + *p - '0';
}
p++;
}
//printf("value=%d\n",value);
return value;
}
/**
*功能:将10进制数转成指定进制的数
*参数:num需转换的数;hex需转换成的进制
*/
char *intToX(int num,int hex){
char *p = malloc(12);
int size = 0;
while(num){
int mod = num % hex;
if(mod >= 0 && mod <= 9){
*p = mod + '0';
}else{
*p = mod + 'a' - 10;
}
num = num / hex;
p++;
size++;
}
//少于8位,用0补全
int j;
for(j = 0;j < 8 - size;j++){
*p = '0';
p++;
}
//倒序返回
int i;
//printf("size:%d\n",size);
//printf("p:%s\n",p);
char *rp = malloc(12);
p--;//指针指向最后一个元素
for(i = 0;i < 8;i++){
*rp = *p;
rp++;
p--;
}
rp = rp - 8;//指针指向第一个元素
//printf("rp:%s\n",rp);
return rp;
}
分享到:
相关推荐
在给定的实例中,我们看到两种主要的JavaScript进制转换方法:`toString()` 和 `parseInt()`。 1. `toString()` 方法: 这个方法是JavaScript中用于将数字转换为字符串的,同时它也可以接受一个参数来指定目标进制...
Java 进制转换实例详解 Java 进制转换实例详解是 Java 语言中的一种基础知识,涉及到数字的进制转换问题。在 Java 中,数字可以用不同的进制表示,包括二进制、八进制、十进制、十六进制等。下面将详细介绍 Java ...
"微机原理进制转换程序设计" 本资源摘要信息是关于微机原理中进制转换程序设计的知识点总结。进制转换是计算机科学中一个非常重要的概念,涉及到不同数制之间的转换,如二进制、十进制、十六进制等。 1. 需求说明 ...
C语言实现进制转换函数的实例详解 C语言是一种广泛使用的编程语言,它提供了强大的编程能力,包括实现进制转换函数。在本文中,我们将详细介绍C语言实现进制转换函数的实例详解,包括二进制、八进制、十六进制转换...
在阅读了这篇关于“javascript常见数字进制转换实例分析”的文章之后,我们可以更加清晰地认识到在JavaScript中进行数字进制转换的原理和方法。文章通过实例演示了JavaScript在处理十进制、十六进制和二进制之间的...
三、进制转换实例 1. **十进制转其他进制**:使用`printf`函数的`%o`(八进制)、`%x`(十六进制)或`%b`(非标准,但很多编译器支持二进制)格式指定器。 ```c #include int main() { int num = 10; printf(...
6. 进制转换实例: - 二进制101110.11转换为八进制是67.3。 - 十六进制21.04H转换为二进制是100001.00001。 - 十进制2006转换为十六进制是7D6。 7. 计算和转换: - 例如,十进制算术表达式3*512+7*64+4*8+5的...
5. **进制转换实例**: 假设我们有一个二进制数10110,转成十进制就是 \(1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 16 + 0 + 4 + 2 + 0 = 22\)。同样,我们可以将十进制数22转为二进制、八进制或十六进制。 6. **...
总的来说,这个项目是一个基于MFC的进制转换应用实例,它涵盖了C++编程、MFC框架的应用、用户界面设计和交互逻辑实现等多个方面,对于提升开发者在Windows应用程序开发中的技能具有一定的价值。尽管存在UI设计上的...
计算机中进制及进制转换 计算机中进制及进制转换是计算机科学的基础知识之一。了解进制和进制转换是学习计算机科学的基础,掌握了进制和进制转换,可以更好地理解计算机的工作原理和计算机科学的其他知识。 进制是...
适用于在通讯时可以用到的实例,16进制转换为二进制,已经测试OK.
这些函数分别用于将十进制转换为二进制、八进制、十六进制。例如,`decbin(10)`会返回二进制表示的"1010",`decoct(10)`返回八进制的"12",而`dechex(10)`返回十六进制的"A"。 对于2、8、16进制到10进制的转换,PHP...
本资料包“C#进制转换工具”显然提供了一些关于如何在C#中实现这一功能的实例或代码示例。 在C#中,主要通过`Convert.ToInt32`和`Convert.ToString`方法来进行进制转换。例如,如果你有一个十六进制数字(如"1A")...
《数字进制转换器v1.01:深入理解与应用》 数字进制转换是计算机科学中的基础知识,也是日常编程工作中不可或缺的一部分。本文将详细探讨数字进制转换器v1.01这一实用工具的功能及其背后的理论知识,旨在帮助用户更...
在这个案例中,这些工具类可能包含了进制转换和日期时间处理的实用函数,便于开发者在代码中直接调用,而无需创建实例。 综上所述,这个压缩包提供了强大的功能,帮助开发人员更高效地处理日期、时间戳和进制转换,...
5. **应用实例**:2-62进制转换器在实际应用中的例子包括: - **加密和解密**:使用非标准进制可以增加数据的复杂性,提高安全性。 - **唯一标识符**:生成长度固定的62进制字符串作为唯一ID,可以比传统的十进制...
总之,“C语言写的进制转换系统”是一个体现C语言编程基础和进制转换算法的实例。通过这个项目,开发者可以深入理解数值解析、进制转换逻辑以及如何在C语言中构建用户交互界面。对于初学者来说,这是一个极好的学习...
此外,这个压缩包中的"26进制转换"可能包含了一些具体的应用实例,比如使用26进制编码字符串,或者在某种算法中作为中间步骤。如果涉及到加密,26进制可以提供一种简单的混淆手段,使得原始数据不易被直接识别。 总...