#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;
}
分享到:
相关推荐
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
《基于YOLOv8的智慧社区独居老人生命体征监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
Android Studio Meerkat 2024.3.1 Patch 1(android-studio-2024.3.1.14-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/90557060 part2: https://download.csdn.net/download/weixin_43800734/90557056
侧轴承杯加工工艺编制及夹具设计.zip
NASA数据集锂电池容量特征提取(Matlab完整源码和数据) 作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
板料折弯机液压系统设计.zip
C6150车床的设计.zip
机器学习之KNN实现手写数字
python爬虫;智能切换策略,反爬检测机制
mpls-vpn-optionA-all
56tgyhujikolp[
GB 6442-86企业职工伤亡事故调查分析规则.pdf
汽车液压式主动悬架系统的设计().zip
2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文档详细复现了金融数学课程作业,涵盖欧式看涨期权定价和投资组合优化两大部分。对于欧式看涨期权定价,分别采用Black-Scholes模型和蒙特卡洛方法进行了计算,并对彩虹期权进行了基于最大值的看涨期权定价。投资组合优化部分则探讨了最小方差组合、给定收益的最小方差组合、最大效用组合以及给定风险的最大收益组合四种情形,还对比了拉格朗日乘数法和二次规划求解器两种方法。文中不仅提供了详细的MATLAB代码,还有详尽的中文解释,确保每一步骤清晰明了。 适合人群:金融工程专业学生、量化分析师、金融数学爱好者。 使用场景及目标:①帮助学生理解和掌握金融衍生品定价的基本原理和方法;②为从事量化分析的专业人士提供实用工具和技术支持;③作为教学材料辅助高校教师讲授相关内容。 其他说明:文档还包括了完整的论文结构建议,从封面页到结论,再到附录,涵盖了所有必要元素,确保提交的作业符合学术规范。此外,还特别强调了数据预处理步骤,确保代码可以顺利运行。
脉冲电解射流加工喷射装置设计(1)
ThinkPad S1 (2nd Generation) 和ThinkPad Yoga 260 用户指南V3.0,包含如何拆机更换硬件
charles描述文件下载
python代码-使用人类对话数据集lora微调deepseek