任意进制转换(2进制、8进制、16进制等)
文章目录
- 写在前面
- C
- C++
- 任意进制转换函数
写在前面
今天网络赛有道题涉及进制转换,最后时间不够了,气死我了。还是对进制转换太生疏了,所以决定对进制转换总结一下。
C
格式 | 进制 |
---|---|
%d | 10进制 |
%o | 8进制 |
%x | 16进制(小写) |
%X | 16进制(大写) |
虽然没有二进制,但可以直接读写8和16进制。
#include<bits/stdc++.h>
using namespace std;
int main() {int x;scanf("%d", &x);printf("%d\n", x);printf("%o\n", x);printf("%x\n", x);printf("%X\n\n", x);scanf("%o", &x);printf("%d\n", x);printf("%o\n", x);printf("%x\n", x);printf("%X\n\n", x);scanf("%x", &x);printf("%d\n", x);printf("%o\n", x);printf("%x\n", x);printf("%X\n", x);return 0;
}
如果要调用转换结果,可以用sprintf()和sscanf()进行操作。
#include<bits/stdc++.h>
using namespace std;
int main() {int x, y;char s[100];scanf("%d", &x);//x从10进制转换为8进制存进ysprintf(s,"%o", x);sscanf(s, "%o", &y);//得到y并进行相关操作。。printf("%o\n\n", y);scanf("%o", &x);//x从8进制转换为16进制存进ysprintf(s, "%x", x);sscanf(s, "%x", &y);printf("%x\n\n", y);scanf("%X", &x);//x从16进制转换为10进制存进ysprintf(s, "%d", x);sscanf(s, "%d", &y);printf("%d\n\n", y);return 0;
}
C++
c++的与c类似,也可以直接读写8进制和16进制。
格式 | 进制 |
---|---|
dec | 10进制 |
oct | 8进制 |
hex | 16进制 |
#include<bits/stdc++.h>
using namespace std;
int main() {int x;cin >> x;cout << oct << x << "\n\n";//10转8cin >> oct >> x;cout << hex << x << "\n\n";//8转16cin >> hex >> x;cout << dec << x;//16转10return 0;
}
以及对应的stringstream,头文件是< sstream >
#include<bits/stdc++.h>
using namespace std;
int main() {int x, y;stringstream st;cin >> x; //10转8存进yst << oct << x;st >> dec >> y;cout << y;return 0;
}
比赛主要是用C/C++,其他语言就暂不罗列了。
任意进制转换函数
自己写的进制转换函数,理论是到36进制(因为字母不够 ),如果要字母大写改一下就好了,若有错请斧正。
string trans(string num ,int from ,int to) { //num待转换数,from和to表示进制ll tmp, ten = 0;string ans;char c;for(int i=0;i<num.size();i++){ //from进制转换为10进制ten *= from;if (num[i] >= '0' && num[i] <= '9')tmp = num[i] - '0';else tmp = num[i] - 'a' + 10;ten += tmp;}//cout << ten << "\n";while (ten) { //10进制转换为to进制tmp = ten % to;c = tmp < 10 ? tmp + '0' : tmp - 10 + 'a';ans += c;ten /= to;}reverse(ans.begin(), ans.end());return ans;
}
测试结果
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string trans(string num ,int from ,int to) { //num待转换数,from和to表示进制ll tmp, ten = 0;string ans;char c;for(int i=0;i<num.size();i++){ //from进制转换为10进制ten *= from;if (num[i] >= '0' && num[i] <= '9')tmp = num[i] - '0';else tmp = num[i] - 'a' + 10;ten += tmp;}//cout << ten << "\n";while (ten) { //10进制转换为to进制tmp = ten % to;c = tmp < 10 ? tmp + '0' : tmp - 10 + 'a';ans += c;ten /= to;}reverse(ans.begin(), ans.end());return ans;
}
int main() {//测试2,8,10,16进制相互转换cout << trans("351306", 8, 2) << "\n";cout << trans("946351", 10, 2) << "\n";cout << trans("a6b816", 16, 2) << "\n";cout << "\n";cout << trans("101111111001", 2, 8) << "\n";cout << trans("13541913", 10, 8) << "\n";cout << trans("a6b8c9def", 16, 8) << "\n";cout << "\n";cout << trans("10000001", 2, 10) << "\n";cout << trans("6543210", 8, 10) << "\n";cout << trans("fe60a6b8c", 16, 10) << "\n";cout << "\n";cout << trans("1101010101", 2, 16) << "\n";cout << trans("66240", 8, 16) << "\n";cout << trans("98109813", 10, 16) << "\n";return 0;
}
原创不易,请勿转载(本不富裕的访问量雪上加霜 )
博主首页:https://blog.csdn.net/qq_45034708
如果文章对你有帮助,记得关注点赞收藏❤
任意进制转换(2进制、8进制、16进制等)相关推荐
- 16进制转换byte数组;byte数组转16进制;随机产生一组16进制数;读写
将byte数组转换为16进制数: public static final char[] HEX = "0123456789ABCDEF".toCharArray();public ...
- linux 大数字 进制转换,Linux下用bc快速进行数字进制转换
介绍如何在Linux下用bc命令进行快速的数字进制转换. 我想Windows里,数字进制转换最方便的就是自带的calc计算器,但是它原没有我们可爱的Linux方便.Linux下,我们在term里敲 几 ...
- 嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)
嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include<st ...
- android进制之间的转换器,一个Android平台的16进制转换器
<一个Android平台的16进制转换器>由会员分享,可在线阅读,更多相关<一个Android平台的16进制转换器(1页珍藏版)>请在人人文库网上搜索. 1.一个An droi ...
- python 进制转换_Python数据结构与算法——递归应用之进制转换
高考加油 在前面的文章中堆栈也用于进制转换(存放余数).而递归也可以用于进制转换,有固定模式循环,并且可以规模越来越小的问题都可以转换成递归 栈与递归之间一定有点联系 整数转换成任意进制 日常运算都是 ...
- 进制转换计算机文档,(完整版)计算机各种进制转换练习题(附答案)
进制转换练习题 1.十进制数1000对应二进制数为______,对应十六进制数为______. 供选择的答案 A:①1111101010 ②1111101000 ③1111101100 ④111110 ...
- 转换8421码的程序c语言,16进制数转换成8421BCD编码函数
.INCLUDE hardware.inc .IRAM _Led_Out: .dw 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 _L ...
- linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...
嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...
- java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!
2进制CPU使用,8进制很少见,10进制适合人类使用,16进制适合编译器和底层程序员使用,希望对你有所帮助! 以下文章是自己从别的地方复制粘贴过来, 总结了一下. 虽然看着有点乱, 但是想学 ,就能看 ...
- C#:十六进制字节数组 转换成 字符串、字符串形式的16进制数据 转换成 十六进制字节数组
十六进制字节数组 转换成 字符串 /// <summary>/// 十六进制字节数组 转换成 字符串/// </summary>/// <returns></ ...
最新文章
- java 构建是什么意思_构建的概念
- docker nodejs 基本应用
- Spring Boot 、Spring Data JPA、Hibernate集成
- 手写webpack系列一:了解认识loader-utils
- SpringCloud(笔记)
- 那天有个小孩跟我说LINQ(四)
- 监控mysql锁定状态_MySQL 锁的监控及处理
- MyISAM表加字段的特殊方法
- ffmpeg 截图 java_Java Web 中使用ffmpeg实现视频转码、视频截图
- 趣文:有趣的 Linux 命令
- (转)python的range()函数用法
- 大规模图搜索和实时计算在阿里反作弊系统中的应用
- 【Shawn-Git】gitlub的使用指导(针对六届软件杯)
- Windows垃圾清理BAT脚本
- 进销存软件修改调整商品的成本(库存成本)
- 模糊聚类算法(FCM)
- python_习题练习_5_小游戏《唐僧大战白骨精》
- 使用PageOffice实现文档(word,excel,pdf)在线预览编辑
- 应届毕业生(程序员)如何工作更顺利、步步高升
- 修改母版中页面的Title
热门文章
- web咸鱼自救攻略--typescript的类没有你想象中的那么难
- Sublime Text 2 设置文件详解转
- 打开office报错提示向程序发送命令时出现问题
- repo报错:SyntaxError: invalid syntax
- 《C++ primer》学习笔记(第二章)——变量和基本类型
- python 存根_如何用Python编写类方法的存根
- Intellij IDEA 神级插件
- 护士人文修养测试题答案
- 网络推广行业拓客的10个经典方法
- 计算机丢失cxcore100.dll,cxcore100.dll