进制转换是非常重要的内容,考察基本功,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进制相关推荐

  1. python16进制转10进制_python 字节串及10进制,16进制相关转换

    进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...

  2. 16进制数组转成10进制 qt_QT 16进制 ASII   10进制 转换

    //16进制字符串转字节数组 static QByteArray HexStrToByteArray(QString str) { QByteArray senddata;  //发送数据 int h ...

  3. 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 ...

  4. Java10进制转16进制,16进制转10进制

    1.Java10进制转16进制 /** 卡号位数:8 */public static byte CARD_NUM_BIT = 8;/*** isBlank * * @param value* @ret ...

  5. 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( ...

  6. C++10进制转16进制

    10进制转16进制是常用的算法,一般利用循环做除法求余数的方法来求解.由于先求出来余数要最后输出,给这个问题增加了难度,在学习过程中发现一个利用字符串巧妙解决该问题的方法: #include<i ...

  7. bash实现10进制,16进制等等相互之间转化(转)

    为什么80%的码农都做不了架构师?>>>    bash实现10进制,16进制等等相互之间转化 在linux的bash中,来直接进行10进制,16进制,2进制之间的转化: 1.  e ...

  8. STM32 10进制转16进制,16进制转10进制 超简单

    STM32自带进制转换函数 #include "stdio.h" //需要加这个头文件 uint8_t B; char A[3]; /*10进制转16进制*/ sprintf(A, ...

  9. 16进制与10进制互转,16进制转10进制,10进制转16进制

    近期在调试单片机时需要观看端口数据,需要将16进制数据转化成10进制数据.在网上找了蛮多都只能实现单个数据的转化,于是便用PYTHON编写了一份. import tkinter as tk root= ...

  10. 10进制和16进制 数字和ASCII码互转

    10进制和16进制数转ASCII码 int hex2ascii(unsigned char *hex, int hex_len, char *text) {char buffer[20];int cn ...

最新文章

  1. 一些改进模型速度/精度的工程方法
  2. 彻底炸锅了!华为新天才少年出炉:武大94年博士生入选!任正非最新发声:江山代有才人出,不拘一格降人才!...
  3. numpy中计算矩阵数值的核心函数
  4. 使用R语言进行中文分词
  5. CentOS安装sshd服务
  6. sublime配置运行python文件的快捷键
  7. 如何在python中构造想要的时间戳参数
  8. 用xfire开发webservice实例
  9. python字符串的特点_python小白之路(特性语法三之字符串)
  10. vue3中 使用 swiper 插件,自定义切换按钮, 将 前进后退 、左右切换 按钮放到容器外部
  11. 优酷用户触达平台技术大揭秘
  12. redis之列表字典操作
  13. AlgoSec破解license
  14. 如何免费下载百度文库,豆丁网等付费文章
  15. 五 IP核行业潜在投资方向和机会
  16. html模拟百度人物百科,HTML MARC
  17. 武汉二手房市场现在怎样了?涨了还是跌了?分析下武汉二手房数据
  18. Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 怎么办?
  19. 《Spring实战(第四版)》电子版
  20. 运放和比较器的区别分析?运放可以当做比较器用么?(硬件每日一题)

热门文章

  1. 美元汇率对A股市场影响
  2. yolov7-pose:基于COCO-KeyPoint的yolov7-pose训练
  3. SPL 提速天体聚类任务 2000 倍
  4. WEB端三维可视化(threejs)03
  5. python中用turtle绘制同心圆_使用Python+turtle绘制同心圆
  6. 数码相机CCD尺寸大小和感光面积与相片质量关系
  7. 绘制Vue主页的列表结构(包括增、删、改、查功能)
  8. Achshar Player:把Chrome浏览器当作本地音乐播放器使用
  9. 直流高压脉冲发生电路分析
  10. 【eslint】Identifier ‘***_***‘ is not in camel case