大数10进制转16进制
进制转换是非常重要的内容,考察基本功,4月底在字节跳动的春招笔试中做到了进制转换的题,不过是大整数的进制转换。
题目大意:
十进制数转16进制,会出现超大数字的情况,大小超过64位正整数的表示范围,不能使用系统库进行进制转换。
输入:
一个十进制数字
输出:
输出该十进制数对应的16进制数。
大概有以下几种解法:
(1)当场手写大整数包(C++);
(2)模拟大整数的笔算(模拟小学学的除法)
(3)用java中的BigInteger类进行运算;
显然,第一种方法不太明智,杀鸡焉用宰牛刀,后两者可以尝试:
解题1:模拟笔算
个人认为这个是轻巧的方法,里面含有许多小技巧。
实现代码如下:
#include<bits/stdc++.h>
using namespace std;int main()
{while(1){cout<<"输入十进制数"<<endl;///****************1.输入string str;cin>>str;int len=str.size();for(int i=0;i<len;i++)///****************2.异常处理{if(str[i]<48||str[i]>57) //0的ascll码是48,9的ascll码值为57{cout<<"输入了非法字符"<<endl;return 0;}}string result=""; ///****************3.正式处理string hex="0123456789abcdef";int i=0;char cnt2='0';while(1){while(i<len&&str[i]=='0')i++;if(i>=len)break;int cnt=0;for(;i<len;i++){int sum=cnt*10+(str[i]-'0');str[i]=char(sum/16+'0'); //因为sum不会超过159,sum/16不会超过10,不会超过8位二进制表示,cnt=sum%16; //因此不会因为int转成char被截断而有误差。cnt2=hex[sum%16];}i=0;result=cnt2+result;}if(result=="") //输入为0的时候,结果就是0;{cout<<0<<endl;return 0;}cout<<result<<endl;}return 0;
}
解题2:运用java中的BigInteger类
package systemconvert10_16;
import java.util.Scanner;
import java.math.BigInteger;public class convert10_16{public static void main(String[] args) {Scanner scanner10=new Scanner(System.in);String str=scanner10.nextLine();String result=new java.math.BigInteger(str,10).toString(16);System.out.println("16进制结果为:"+result);scanner10.close();}
}
String outputstr=new BigInterger(str,radix1).toString(radix2);
str:要转换的数(string类型);
radix1:要转换的数的进制;
radix2:目标进制。
返回大整数类型数据的字符串表示结果
参考博客:
大整数除法(进制转换)
https://blog.csdn.net/chengsilin666/article/details/81412162
利用java中的BigInteger实现进制转换
https://www.cnblogs.com/numen-fan/p/6500914.html
java中的BigInteger(很好很强大)(转)
https://blog.csdn.net/w00w12l/article/details/7290750
大数10进制转16进制相关推荐
- python16进制转10进制_python 字节串及10进制,16进制相关转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...
- 16进制数组转成10进制 qt_QT 16进制 ASII 10进制 转换
//16进制字符串转字节数组 static QByteArray HexStrToByteArray(QString str) { QByteArray senddata; //发送数据 int h ...
- linux shell 10进制转16进制
10进制转16进制:15 > 0xf printf '%x\n' 15 16进制转10进制:0xf > 15 printf '%d\n' 0xF echo $((16#f)) 16进制转8 ...
- Java10进制转16进制,16进制转10进制
1.Java10进制转16进制 /** 卡号位数:8 */public static byte CARD_NUM_BIT = 8;/*** isBlank * * @param value* @ret ...
- Javascript 10进制转16进制补0 ,16进制转10进制
Javascript 10进制转16进制补0 ,16进制转10进制 10进制转16进制补0 16进制转10进制 10进制转16进制补0 // 10进制转16进制补0 function dec2hex( ...
- C++10进制转16进制
10进制转16进制是常用的算法,一般利用循环做除法求余数的方法来求解.由于先求出来余数要最后输出,给这个问题增加了难度,在学习过程中发现一个利用字符串巧妙解决该问题的方法: #include<i ...
- bash实现10进制,16进制等等相互之间转化(转)
为什么80%的码农都做不了架构师?>>> bash实现10进制,16进制等等相互之间转化 在linux的bash中,来直接进行10进制,16进制,2进制之间的转化: 1. e ...
- STM32 10进制转16进制,16进制转10进制 超简单
STM32自带进制转换函数 #include "stdio.h" //需要加这个头文件 uint8_t B; char A[3]; /*10进制转16进制*/ sprintf(A, ...
- 16进制与10进制互转,16进制转10进制,10进制转16进制
近期在调试单片机时需要观看端口数据,需要将16进制数据转化成10进制数据.在网上找了蛮多都只能实现单个数据的转化,于是便用PYTHON编写了一份. import tkinter as tk root= ...
- 10进制和16进制 数字和ASCII码互转
10进制和16进制数转ASCII码 int hex2ascii(unsigned char *hex, int hex_len, char *text) {char buffer[20];int cn ...
最新文章
- 一些改进模型速度/精度的工程方法
- 彻底炸锅了!华为新天才少年出炉:武大94年博士生入选!任正非最新发声:江山代有才人出,不拘一格降人才!...
- numpy中计算矩阵数值的核心函数
- 使用R语言进行中文分词
- CentOS安装sshd服务
- sublime配置运行python文件的快捷键
- 如何在python中构造想要的时间戳参数
- 用xfire开发webservice实例
- python字符串的特点_python小白之路(特性语法三之字符串)
- vue3中 使用 swiper 插件,自定义切换按钮, 将 前进后退 、左右切换 按钮放到容器外部
- 优酷用户触达平台技术大揭秘
- redis之列表字典操作
- AlgoSec破解license
- 如何免费下载百度文库,豆丁网等付费文章
- 五 IP核行业潜在投资方向和机会
- html模拟百度人物百科,HTML MARC
- 武汉二手房市场现在怎样了?涨了还是跌了?分析下武汉二手房数据
- Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 怎么办?
- 《Spring实战(第四版)》电子版
- 运放和比较器的区别分析?运放可以当做比较器用么?(硬件每日一题)
热门文章
- 美元汇率对A股市场影响
- yolov7-pose:基于COCO-KeyPoint的yolov7-pose训练
- SPL 提速天体聚类任务 2000 倍
- WEB端三维可视化(threejs)03
- python中用turtle绘制同心圆_使用Python+turtle绘制同心圆
- 数码相机CCD尺寸大小和感光面积与相片质量关系
- 绘制Vue主页的列表结构(包括增、删、改、查功能)
- Achshar Player:把Chrome浏览器当作本地音乐播放器使用
- 直流高压脉冲发生电路分析
- 【eslint】Identifier ‘***_***‘ is not in camel case