精华内容
下载资源
问答
  • 注意:16进制即逢16进1,每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的,即逢16进1,其中用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。...

    题目

    题目描述
    请从键盘读入一个非负整数n(n是一个不超过18位的正整数),将n转换为16进制!
    注意:16进制即逢16进1,每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的数,即逢16进1,其中用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。
    如:60的十六进制为3C。(字母请用大写)
    
    **输入**
    一个不超过18位的非负整数n
    
    输出
    该数的十六进制值
    
    样例输入
    100000000000
    
    样例输出
    174876E800
    

    程序实现

    方法一

    #include <iostream>
    using namespace std;
    
    long long n, x;
    string s;
    char c;
    
    int main(){
    	/*
    		条件: 
    			n是一个不超过18位的正整数。 
    		注意:
    			int最多表达到 2^31 - 1,10位整数。 
    			long long 最多表达到 2^63 - 1,19位整数。
    		
    		思路:
    			逆序存储到字符串时要注意:
    			整数 0 ~ 9,转换为字符 '0' ~ '9',x + '0' 
    			整数 10 ~ 15,转换为字符 'A' ~ 'F',x + 'A' - 10 或 x + 55 
    	*/
    	cin >> n;
    	
    	while(n != 0){
    		x = n % 16;
    //		cout << x << endl;
    		if(x < 10){
    			c = x + '0';
    		}else{
    			c = x + 'A' - 10;
    		}
    		
    		s = c + s;
    		
    		n = n / 16;
    	}
    	
    //	cout << s;
    
    	if(s == ""){
    		cout << 0; 
    	}else{
    		cout << s;
    	}
    }
    

    方法二

    #include <iostream>
    using namespace std;
    
    long long n, x;
    string s;
    string t = "0123456789ABCDEF";
    
    int main(){
    	/*
    		条件: 
    			n是一个不超过18位的正整数。 
    		注意:
    			int最多表达到 2^31 - 1,10位整数。 
    			long long 最多表达到 2^63 - 1,19位整数。
    		
    		思路:
    			逆序存储到字符串时要注意:
    			整数 0 ~ 9,转换为字符 '0' ~ '9',x + '0' 
    			整数 10 ~ 15,转换为字符 'A' ~ 'F',x + 'A' - 10 或 x + 55 
    	*/
    	cin >> n;
    	
    	while(n != 0){
    		x = n % 16;
    		// 将 n % 16 转换为字符逆序存入 s 
    		s = t[x] + s;
    		n = n / 16;
    	}
    
    	if(s == ""){
    		cout << 0; 
    	}else{
    		cout << s;
    	}
    }
    
    展开全文
  • value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为: 2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制...

    有3种方式实现,其中两种是使用系统函数,另一种是直接自己编写。

    使用系统函数实现要加入#include ,自己编写则不需要这个头文件。

    下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。

    利用系统函数有

    1. char *  itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

    2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

    3. 自己编写

    如果参数只要两位数的整数,那么很简单。代码如下:

    如果参数是任意整数,由于计算方法是每次都除以16和对16取余数,余数以倒序的顺序排列就是结果,所以最佳方法是用递归函数(当然循环也可以,但需要最后再进行倒序)。递归代码如下:

    最后测试代码如下(以sprintf为例,其余只要替换inttohex函数中的代码内容即可):

    展开全文
  • 如何将字符串中的10进制数和16进制数提取出来,看以下代码:#include typedef char TUINT8 ;typedef int TUINT32;TUINT32 Read_DecNumber(const TUINT8* str);TUINT32 Read_HexNumber(const TUINT8* str);int main...

    如何将字符串中的10进制数和16进制数提取出来,看以下代码:

    #include

    typedef char TUINT8 ;

    typedef int TUINT32;

    TUINT32 Read_DecNumber(const TUINT8* str);

    TUINT32 Read_HexNumber(const TUINT8* str);

    int main(void)

    {

    int ret = Read_DecNumber("1000");

    int d = Read_HexNumber("A");

    printf("将字符串中的数字转化为10进制数 :%d\n",ret);

    printf("将字符串中的16进制数转化为10进制数 :%d\n",d);

    return 0 ;

    }

    //将字符串中的数字转化为10进制数

    TUINT32 Read_DecNumber(const TUINT8* str)

    {

    TUINT32 value;

    if (! str)

    {

    return 0;

    }

    value = 0;

    while ((*str >= '0') && (*str <= '9'))

    {

    value = value*10 + (*str - '0');

    str++;

    }

    return value;

    }

    //将字符串中的16进制数转化为10进制数

    TUINT32 Read_HexNumber(const TUINT8* str)

    {

    TUINT32 value;

    if (! str)

    {

    return 0;

    }

    value = 0;

    while (1)

    {

    if ((*str >= '0') && (*str <= '9'))

    {

    value = value*16 + (*str - '0');

    }

    else if ((*str >= 'A') && (*str <= 'F'))

    {

    value = value*16 + (*str - 'A') + 10;

    }

    else if ((*str >= 'a') && (*str <= 'f'))

    {

    value = value*16 + (*str - 'a') + 10;

    }

    else

    {

    break;

    }

    str++;

    }

    return value;

    }运行结果:

    36da862e01f2c4f3b4aaa8293b67efd5.png

    展开全文
  • 二进制表示法在计算机科学中很重要,计算机中存储的所有...十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/将17作为被除,除以2...

    二进制表示法在计算机科学中很重要,计算机中存储的所有值都以一串二进制数字,即0和1的形式存在。 如果无法在通用表示形式和二进制数字之间来回转换,我们将需要以非常奇怪的方式与计算机进行交互。

    十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

    将17作为被除数,除以2,每次所得的余数有两种可能,0或者1. 最后将余数从先到后依次排列,即得到二进制代表的数。最高次的为MSB,最低次的为LSB. 图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

    References:https://www.electronics-tutorials.ws/binary/bin_2.html​www.electronics-tutorials.ws

    As the decimal number is a weighted number, converting from decimal to binary (base 10 to base 2) will also produce a weighted binary number with the right-hand most bit being the Least Significant Bit or LSB, and the left-hand most bit being the Most Significant Bit or MSB, and we can represent this as:

    由于十进制数是一个加权数,因此从十进制到二进制(从10到2)的转换也将产生一个加权的二进制数,其中最右边的位是最低有效位LSB,而最左边的位 是最高有效位或最高有效位,我们可以将其表示为MSB.

    两个网站详细介绍转换过程:https://www.wikihow.com/Convert-from-Decimal-to-Binary​www.wikihow.comBase Conversion Tool​www.mathsisfun.com

    但是,我们如何轻松地将整数值转换为二进制数呢? 答案是用“除以2”的算法,该算法使用堆栈来跟踪二进制结果的数字。

    思路:图片来自http://www.pas.rochester.edu/~rsarkis/csc162/_static/lectures/Stacks.pdf

    二进制算法:假定我们以大于0的整数作为开始的数字。

    然后,将十进制数连续除以2,并记录余数。

    第一次除以2可得到值是偶数还是奇数的信息。

    -----偶数值的余数为0。它的一位数字为0。

    -----奇数值将为1的余数,而数字1则为一位。

    将二进制数构建为数字序列:第一个余数实际上是序列中的最后一位,最后一个余数是序列中的第一位。

    我们再次看到了反转属性,表明堆栈很可能是解决问题的适当数据结构。

    下面的Python代码实现了2分算法。

    函数divide_by_2将一个十进制数的参数并将其重复除以2。

    第 行使用内置的模运算符%提取余数,然后第 行将其加入堆栈。

    在除法过程达到0之后,将在第-行中构造一个二进制字符串。

    第 行创建一个空字符串。 二进制数字一次从堆栈中弹出,并附加到字符串的右端。 然后返回二进制字符串。

    二进制转换算法可以轻松扩展,以针对任何基数执行转换。 计算机科学使用许多不同的编码。 其中最常见的是二进制,八进制(基数8)和十六进制(基数16)。

    当我们超出基数10时,不能再简单地使用余数了,因为它们本身被表示为两位十进制数。相反,我们需要创建一组数字来表示超出9的那些余数。解决此问题的方法可以将数字集扩展为包括一些字母字符。例如,十六进制将十个十进制数字与前十六个字母字符一起用于16个数字。为实现此目的,将创建一个数字字符串,将数字存储在其相应位置。 0在位置0,1在位置1,A在位置10,B在位置11,依此类推。从堆栈中除去余数时,可以将其用于索引数字字符串,并且可以将正确的结果数字附加到答案中。

    展开全文
  • 小数部分可利用该编程方法(详见Python-十进制的小数部分转换为其他进制数)进行转换。最后分别将转换之后的整数部分和小数部分写在一起即可。这里在前面编程方法的基础上(详见Python-十进制的小数部分转换为其他进制...
  • 十进制的数,转化为16进制数,并输出 #include <bits/stdc++.h> using namespace std; string str; int num; int main(){ ios::sync_with_stdio(0); cin>>num; while(num>0){ int ln = num %...
  • 如何将字符串中的10进制数和16进制数提取出来,看以下代码:#include typedef char TUINT8 ;typedef int TUINT32;TUINT32 Read_DecNumber(const TUINT8* str);TUINT32 Read_HexNumber(const TUINT8* str);int main...
  • 4位16进制数呢?DIV指令只可以对2位16进制数进行除法运算啊,那么下面就为大家来解答。例如把TH1 TL1的数值十进制, 分别存入R4 R3 R2 R1 R0。;--------------------------------------------------------------...
  • loacl str = pack.pack("b", number)
  • # 提示用户输入一个十进制整数 number = int(input("Enter a number:")) def decToHex(number): hexStr = "" while number != 0: temp = number % 16 if temp < 10: hexStr = str(temp) + hexStr else: ...
  • 实验课题一: 将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)。转换函数的原型为:void Convert (int n, char str[], unsigned P);n:输入,待转换的数str:输出,转换好的P进制字符串P:输入...
  • 参考了CSDN上一个大佬的代码,学习了做一下记录。 #include <iostream> using namespace std;...//放二进制字符串 //Convert strings to a long-integer value. long i32=strtol(hexstr,NULL,1
  • C++十进制数转换为十六进制表示的算法C++十进制数转换为十六进制表示的算法完整源码(定义,实现,main函数测试) C++十进制数转换为十六进制表示的算法完整源码(定义,实现,main函数测试) #include <iostream&...
  • 你可以设置一个字符串数组char HEX[16] = {'0', '1', '2', 3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了例子(现写的)int now;...
  • 利用一个函数实现十进制数转换成二进制,八进制,十六进制。利用的是栈的后进先出的思想。算法简单。#include#include#include#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW -2#define OK 1#...
  • C++实现读入二进制数并转换为十进制输出题目描述已知一个只包含0和1的二进制数,长度不大于10,将其转换为十进制并输出。输入描述输入一个二进制整数n,其长度不大于10输出描述输出转换后的十进制数,占一行样例输入...
  • python 把16进制字符串转化为16进制数字, 比如‘0x小编不希望有...(python)如何让python的16进制运算的输出格式为16进制而不...a='0x0012e' b= hex(eval(a)) print b 输出 0x12e 注意,一般计算机的十六进制数直接...
  • 将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)。转换函数的原型为: void Convert (int n,char str[],unsigned P); n:输入,待转换的数 str:输出,转换好的P进制字符串P:输入,要转换的...
  • 10进制数转16进制

    千次阅读 2021-01-13 16:00:33
    已知:进制数123被转换...//10进制数转16进制 System.out.println("请输入一个整数:"); Scanner in =new Scanner(System.in); int number =in.nextInt(); String hex =""; int shang =number; int yu; while
  • 展开全部//将十六进制“10”转换为e68a8462616964757a686964616f31333365633931十进制i:int i = Convert.ToInt32("10", 16);//将十进制i转换为十六进制s:string s = string.Format("{0:X}", i);具体如下:1、简介...
  • 1、十六进制转十进制16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 ...
  • i++ { a = decimalToAny(i, 16, 8) //i 要转换的十进制数 16 采用十六进制 8 位数为8 //WriteString 也是可用的。 f.WriteString(a + "\n") //调用 Sync 来将缓冲区的信息写入磁盘。 f.Sync() } fmt....
  • 十进制数转换成十六进制数 C语言 void c10_16(char p[],int b);
  • 大家好,我是Beta,今天给...功 能:ASCII转十进制 输 入:ASCII字符(参数范围'0'到'9'(即0x30到0x39)) 返 回:十进制数 示 例:输入ASCII字符参数'5'和'9'(即0x35和0x39),返回十进制数59 **********************
  • 先将一个十进制数转换成二进制数; (构造一个0 ~2^30的数组,用number和数组中每个元素逆序比大小, 如果number >= quan_arr[i], 就让number -= quan_arr[i]; 并且该位置的数就置为1,否则该位置的数置为0, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 292,855
精华内容 117,142
关键字:

十进制数转16进制