-
C++以十进制转换为十六进制为例的十进制相关进制转换
2020-02-03 22:18:10十进制转换为N进制的基本方法:除N取余法 方法介绍(十转十六为例) 例如300转换为十六进制: 300 ÷ 16 = 18 ……余12即C 18 ÷ 16 = 1……余2即2 1 ÷16 = 0……余1即1 此时结果为0,结束取余,将取出的余数逆向...基本思路
十进制转换为N进制的基本方法:除N取余法
方法介绍(十转十六为例)
例如300转换为十六进制:
300 ÷ 16 = 18 ……余12即C
18 ÷ 16 = 1……余2即2
1 ÷16 = 0……余1即1
此时结果为0,结束取余,将取出的余数逆向排列即:12C
则12C即为300的十六进制数
总结为:除十六取余直至结果为0,最后将余数逆向排列C++代码
#include<iostream> #include<cmath> using namespace std; int main() { string str; char c; int x,t,i = 0,sum = 0; cin >> x; do { t = x % 16; x = x / 16; if (t < 10) { c = '0' + t; str = c + str; } else { c = 'A' + t - 10; str = c + str; } } while (x); cout << str; return 0; }
注:字符c与字符串衔接时,需要前接。
-
十进制转换为16进制,八进制,二进制通用方法
2019-04-14 14:27:14在介绍这个方法之前,我想来介绍一下移位运算符 移位运算符分为左移和右移 左移:相当于把当前的数值的二进制位数左移移位,末尾进行0补齐 右移:相当于把当前的数值的二进制位数右移移位,分为逻辑右移和算数...在介绍这个方法之前,我想来介绍一下移位运算符
移位运算符分为左移和右移
左移:相当于把当前的数值的二进制位数左移移位,末尾进行0补齐
右移:相当于把当前的数值的二进制位数右移移位,分为逻辑右移和算数右移
算术右移(>>):若是无符号数,则空缺补0,若是负数,空缺补1
逻辑右移(>>>):不管是什么类型,空缺自动补0
例如:i=15(0000 1111),移位两位 i>>2 ,i变为0000 0011(3)
一般在实际操作中多用>>>
算法思想
如果是要转换为16进制,则我们把要进行转换的数值num与15(1111)进行‘与’运算,得到的结果正好是末尾4位的二进制值,然后用10进制能够进行表示,然后我们把num>>>4,把新得到的最后4位来再次进行计算来结果,如果num为0则不必再进行移位操作。同理转换为8进制或者2进制,我们只需要把进行15(1111)依次的变为7(111)/1(1),然后相应的移位的位数进行修改即可
代码
/*base代表满多少进1,offset代表右移多少位数*/ public static void trans(int num,int base ,int offset) { if(num == 0) { System.out.println("0"); return; } //对应关系表 char chs []={'0','1','2','3','4', '5','6','7','8', '9','A','B','C', 'D','E','F'}; /*定义一个临时容器*/ char arr []=new char [32];//因为int是4个字节是32位 int pos = arr.length; while (num!=0) { int temp = num & base; //与当前位数进行‘与’运算求得最后4/3/1位数的结果 arr[--pos] = chs[temp];//逆置存储得到的结果 num = num >>> offset; //右移 } for(int x =pos;x<arr.length;x++) System.out.print(arr[x]); System.out.println(); }
-
c语言中16进制转换为十进制
2018-01-17 09:30:56方法1:使用进制转换转载:.../* 十六进制数转换为十进制数 */ long hexToDec(char *source); /* 返回ch字符在sign数组中的序号 */ int getIndexOfSigns(char ch); int main() {方法1:使用进制转换
转载:https://zhidao.baidu.com/question/51006929.html
#include <stdio.h> #include <string.h> /* 十六进制数转换为十进制数 */ long hexToDec(char *source); /* 返回ch字符在sign数组中的序号 */ int getIndexOfSigns(char ch); int main() { char *hex = "75BCD15"; printf("16进制数:\t%s\n", hex); printf("10进制数:\t%ld\n", hexToDec(hex)); return 0; } /* 十六进制数转换为十进制数 */ long hexToDec(char *source) { long sum = 0; long t = 1; int i, len; len = strlen(source); for(i=len-1; i>=0; i--) { sum += t * getIndexOfSigns(*(source + i)); t *= 16; } return sum; } /* 返回ch字符在sign数组中的序号 */ int getIndexOfSigns(char ch) { if(ch >= '0' && ch <= '9') { return ch - '0'; } if(ch >= 'A' && ch <='F') { return ch - 'A' + 10; } if(ch >= 'a' && ch <= 'f') { return ch - 'a' + 10; } return -1; }
方法2:可以使用sscanf函数将以字符串形式的十六进制数转换为整型的十六进制
sscanf函数的用法与printf函数很像,都是以格式化的形式进行操作,例如如下的例子中,sscanf("A23CD", "%x", &a); "%x"是将字符串A23CD以十六进制形式输入a中,如果将"%x"换成为"%d"的话,就是将字符串A23CD以十进制形式输入a中,这显然是错误的,因为将A23CD转换为十进制的时候,无法解析A,CD等字符,所以得出的结果就是错误的。
int a; sscanf("A23CD", "%x", &a); printf("%x\n",a); printf("%d\n",a);
linux@ubuntu:~/test$ ./a.out a23cd 664525
-
Python 进制转换, 实现任意进制转换为任意进制的方法, 支持小数和负数, 二进制转十进制, 十进制转二进制, ...
2021-01-24 21:33:50# @Time : 2021/1/23 16:10 # @Author : Suage # @File : SysConvert.py from threading import Lock class StringBuilder: def __init__(self, content=None, convert_way='STR', convert_function=None): if ...代码如下:
# -*- coding = utf-8 -*- # @Time : 2021/1/23 16:10 # @Author : Suage # @File : SysConvert.py from threading import Lock class StringBuilder: def __init__(self, content=None, convert_way='STR', convert_function=None): if content is None: self.content = list() elif isinstance(content, str): self.content = list(content) else: if convert_way.lower() == 'str': self.content = list(str(content)) elif convert_way.lower() == 'repr': self.content = list(repr(content)) else: self.content = list(convert_function(content)) def get_str(self): """ 以字符串形式输出内容 :return: 内容 """ return ''.join(self.content) def append(self, text, location=-1): if location == -1: self.content.extend(text) else: for c in text: self.content.insert(location, c) def reverse(self): self.content.reverse() class SysConvert: __unit: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_' def __init__(self): self.__lock = Lock() self.__input_number: str self.__sys_in: int self.__sys_out: int def set_unit(self, unit): """ 设置计数用字符 :param unit: 计数用字符序列 """ self.__unit = unit def num_split(self): """ 拆解数字的整数部分和小数部分 :return: 整数部分, 小数部分 """ return self.__input_number.split('.') def __is_int(self): """ 判断输入数字是否为整数 :return: 整数返回True, 小时返回False """ if '.' in self.__input_number: return False return True def __concert(self, input_num, input_sys, output_sys): """ 执行转换 :return:转换结果 """ self.__input_number: str = input_num.upper().replace(' ', '') if self.__input_number[0] == '-': self.sign = False self.__input_number = self.__input_number[1:] else: self.sign = True self.__sys_in: int = input_sys self.__sys_out: int = output_sys is_int = self.__is_int() if is_int: if self.input_error(self.__input_number): return 'input error' return self.__int_concert(self.__input_number) int_part, float_part = self.num_split() if self.input_error(int_part) or self.input_error(float_part): return 'input error' number_part = f'{self.__int_concert(int_part)}.{self.__float_concert(float_part)}' if self.sign: return number_part return f'-{number_part}' def concert(self, input_num, input_sys, output_sys): """ 执行转换 :param input_num: 输入数字 :param input_sys: 输入数字进制 :param output_sys: 输出数字进制 :return: 转换结果 """ self.__lock.acquire() try: res = self.__concert(input_num, input_sys, output_sys) finally: self.__lock.release() return res def __int_concert(self, int_part): """ 整数部分转换为目标进制 :param int_part: 要转换的数字 :return: 转换结果 """ number = self.__any_sys_to_int(int_part) return self.__int_to_any_sys(number) def __any_sys_to_int(self, number): """ 将任何进制的整数部分转换为计算机可运算的整数类型 :param number: 要转换的整数部分 :return: 转换结果 """ res = 0 number = number[::-1] for i in range(len(number)): res += self.__unit.index(number[i]) * pow(self.__sys_in, i) return res def __int_to_any_sys(self, num): """ 将整数类型的数字装换为目标进制的数字 :param num: 要转换的数字 :return: 转换结果 """ _sb: StringBuilder = StringBuilder() while True: num, y = divmod(num, self.__sys_out) _sb.append(self.__unit[y]) if num < self.__sys_out: _sb.append(self.__unit[num]) break _sb.reverse() return _sb.get_str().lstrip("0") def __float_concert(self, float_part): """ 小数部分转换为目标进制 :param float_part: 要转换的小数部分(小数点后的部分) :return: 转换结果(小数点后面部分) """ number = self.__any_sys_to_float(float_part) return self.__float_to_any_sys(number) def __any_sys_to_float(self, number): """ 将任何进制的整数部分转换为计算机可运算的整数类型 :param number: 要转换的整数部分 :return: 转换结果 """ res = 0 number = number for i in range(len(number)): res += self.__unit.index(number[i]) * pow(1 / self.__sys_in, (i + 1)) return res def __float_to_any_sys(self, num): """ 将整数类型的数字装换为目标进制的数字 :param num: 要转换的数字 :return: 转换结果 """ _sb: StringBuilder = StringBuilder() n = num for _ in range(15): n = n * self.__sys_out n_int = int(n) n = n - n_int _sb.append(self.__unit[n_int]) if n == 0: break return _sb.get_str() def input_error(self, num): for c in num: if self.__unit.index(c) >= self.__sys_in: return True return False if __name__ == '__main__': c1 = SysConvert() res1 = c1.concert(input_num='BYSUAGE.I', input_sys=36, output_sys=6) res2 = c1.concert(input_num=res1, input_sys=6, output_sys=36) print(res1, res2, sep='\n')
运行结果:
15544450142422.3
BYSUAGE.I写了将近6个小时才写完, 好累…
-
php 10进制转16进制,PHP如何将十进制转换为十六进制?(代码示例)
2021-03-26 15:34:22下面本篇文章就来给大家介绍一下dechex()和base_convert() 函数是如何将十进制转换为十六进制的,希望对大家有所帮助。【视频教程推荐:PHP教程】方法一:使用dechex()函数将十进制转换为十六进制dechex()函数是PHP... -
java 二进制转换十六进制的方法_Java的进制转换操作(十进制、十六进制、二进制)...
2021-02-28 12:22:352014-05-06 17:34 吴文付最近由于工作上的需要,遇到进制转换的...1、十进制 转 十六进制 二进制://调用java自带的api//测试十进制转16进制 2进制System.out.println("十进制10转16进制为"+Integer.toHexString(10)... -
10进制转换为16进制
2018-12-19 10:26:22十进制小数转换为16进制小数可采用乘16取整法,即: 十进制小数转R进制小数,方法为乘R取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为R进制小数,这时就需要... -
十进制转换为二进制和十六进制
2019-09-29 16:43:18十进制转换为二进制: 方法1:除二取余法 每次将整数除以二,余数为该位上的权数,然后商继续除以二,余数为上一位权上的数,就这样一直除下去,直到商为0为止,最后读数时,从最后一个余数开始读,一直读到最前的的... -
二进制转换为八进制、十进制、十六进制的方法
2009-03-25 19:30:49二进制转换为十进制:11111 → 1×2的四次方+1×2的三次方+1×2的二次方+1×二的一次方+1×2的零次方 = 16 + 8 + 4 + 2 + 1 = 31二进制转换成八进制:10101101 → 010101101 → 010 101 101 = 2 5 5= 255 ... -
10进制转换为16进制数——算法
2020-01-15 22:04:1710进制转换为16进制数 题目描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十... -
hive转16进制unhex_二进制、八进制、十进制、十六进制转换计算方法
2021-01-05 13:10:12强国一代,有我在,每个中国人都有一个伟大的中国梦。国庆节是由一个国家制定的用来纪念国家本身的法定假日。进制也就是进制位,我们常用的进制包括:二进制、八进制、十... 十进制、二进制的转换 以202为例(因为... -
一种在程序中将十六进制转换为十进制的简单方法
2020-07-29 23:58:15在网上找了很多将十六进制转换为十进制的方法,都比较复杂;后来自己想了一个比较简单的方法,跟大家分享一下! 以下是C++语言编写的代码: #include<iostream> using namespace std; void main() { int a=... -
数学方法进制转换之十进制转二进制
2017-11-15 16:23:56数学方法进制转换之十进制转二进制若想要实现十进制转其他进制,只需要将%8,/8替换为相应的数,例如十进制转十六进制,则改为%16,/16。#include #include using namespace std; stack<int> Conversions(int num){ ... -
十进制转换成其他进制
2020-07-17 16:12:01方法:采用基数连除取余法。要将十进制数转换为几进制就除以几,先得到余数为地低位,后得到的余数为高位 十进制转换二进制 除以2取余 十进制转换十六进制 除以16取余 -
十进制转换为十六级进制方法!!! 简单!!正解
2020-09-27 12:36:22在这样的动力的驱动下,找到了一个将十进制化为十六进制的简单的方法。 首先我们先来看一下, 这个表中可以看出 十进制和十六进制的对应。 给你一个十进制,比如72. 首先72%16 得到余数 8 然后72/16 得到商为4 然后... -
十进制进制法_进制转换方法
2020-12-29 10:32:33Hexnumbersystem是计算机中数据的一...N进制的数可以用0---(N-1)的数表示超过9的用字母A-F例如:10进制的32表示成16进制就是:2016进制的32表示成10进制就是:3×16^1+2×16^0=506.1为什么需要八进制和十六进制?编程中... -
Excel中实现十六进制数转换为有符号十进制的方法
2020-04-15 13:13:38在Excel或Matlab等软件中,常用XX2XX的表达式进行进制转换,接下来主要展示16进制转换为10进制的操作 16进制转10进制:无符号直接调用HEX2DEC 16进制转10进制:有符号需要根据进制转换的原理,进行小小的修改 以... -
python 二进制转十进制_python如何进行进制转换
2020-11-21 13:08:50python如何进行进制转换1、十进制转二进制(bin)首先我们看看怎么把一个十进制转化成二进制,我们可以使用python的内置方法 bin输出python 中二进制以ob开头2、十进制转八进制(oct)我们再看看十进制转化为八进制... -
十进制转换为十六进制(转载过来的)
2014-03-15 11:57:00要把1610转换成16进制,采用什么方法好?为什么有的是先转换成2进制?具体方法和步骤怎么样? 我来帮他解答 输入内容已经达到长度限制 还能输入9999字 插入图片删除图片插入地图删除地图插入视频视频地图 ... -
java十进制的转换方法
2019-03-07 14:42:15无论是常规的10转2,8,16,还是相对应的2,8,16进制转化为10进制的方法,当然也包括10->n进制,n进制转10进制的常规方法. 都被封装在Integer对象中. 10进制转化其他进制 对应的方法,参数:n(原10进制数据),r(进制),... -
十进制 转换为 二进制 / 十六进制
2011-03-29 14:24:00今天一朋友问了一问题想到了二进制的解决方法,于是上网搜了下资料,觉得有用,就拿来主意,贴下以备后用。 char *_itoa( int value, char *string, int radix ...这就是把985转换为16进制的字符串。如果你一定要自... -
java口算出题程序_5分钟学会十进制转换成二进制的快速口算方法 & Java输出二进制的代码...
2021-03-17 23:49:12大一寒假的时候我在学校里学C语言的补码时候学会了一种十进制换成二进制的方法,不知道学计算机的是不是也是这么算的,感觉比高中数学课教的那除2取余的方法快多了,而且容易掌握和不需要笔算。具体方法如下,我会先... -
进制转换:二进制和十进制的互转和推广至任意进制
2016-12-04 09:38:08一、十进制转换至二进制通常采用“除二取余,逆序连接”方法。 (13)52=(00110100)2 二、二进制转换为十进制采用“权值展开”方法。 (1101)2=(1*23+1*22+0*21+1*20)10=(8+4+0+1)10=(13)10三、推广类似地,我们可以... -
16进制ff转化为二进制_python如何进行进制转换
2021-01-05 13:26:27python如何进行进制转换1、十进制转二进制(bin)首先我们看看怎么把一个十进制转化成二进制,我们可以使用python的内置方法 bin输出python 中二进制以ob开头2、十进制转八进制(oct)我们再看看十进制转化为八进制... -
十进制、二进制、十六进制转换
2021-03-25 21:39:46十进制是用0-9十个数码表示的数 二进制 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是逢二进一,借位规则是借一当二。 十六进制 十六进制(英文名称:... -
python转换八进制用取余数方法_Python实现十进制和二进制、八进制、十六进制的相互转换...
2020-12-30 10:40:56实现思想2.1 十进制转换为其他进制2.2 其他进制转换为十进制3. 参考资料1. 前言此文方便后期的复习,如果有问题,欢迎批评指正。2. 实现思想2.1 十进制转换为其他进制原理:除以进制数(base)取余,逆序输出。 举例... -
16进制转10进制 php,十六进制怎么转换成十进制
2021-03-25 08:43:57十六进制转换成十进制的方法:首先确定一个十六进制数;然后计算出第0位以及第1位的权值;接着在第N位上,表示大小为“X * 16”的N次方;最后通过竖式计算出转换结果即可。1、十六进制转十进制:16进制数的第0位的... -
二进制十进制相互转换方法
2017-04-05 12:48:22将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数就是110100 ...