精华内容
下载资源
问答
  • 字符串转换成十进制整数 (15分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前...

    字符串转换成十进制整数 (15分)

    输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

    输入格式:

    输入在一行中给出一个以#结束的非空字符串。

    输出格式:

    在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

    输入样例:

    +-P-xf4+-1!#

    输出样例:

    -3905

    代码:

    #include<stdio.h>
    #include<string.h>
    int ci(int flag)//求16的flag次方
    {
        int i;
        if(flag == 0) return 1;//0次方 返回1
        else{
        int sum = 1;
        for(i = 0; i < flag; i++)
        {
            sum = sum * 16;
        }
        return sum;
        }
    }
    int main()
    {
        char a[1000];
        char c[1000];//栈
        int i, len, flag, top, r, sum;
        while(~scanf("%s", a))
        {
            flag = 0;
            top = 0;
            r = 0;
            len = strlen(a);
            for(i = 0; i < len; i++){
            if(a[i] == '-' && !flag)//如果第一个十六进制前面有负号,标记一下
            {
                top = 1;
            }
                if((a[i] >= '0' && a[i] <= '9') || (a[i] >= 'A' && a[i] <= 'F') || (a[i] >= 'a' && a[i] <= 'f'))//判断是不是十六进制符号
                {
                    flag = 1;//遇到十六进制标记一下
                    c[r++] = a[i];//存入栈中
                }
            }
            sum = 0;//转换成十进制的结果
            flag = 0;
            while(r != 0)
            {
                if(c[r - 1] >= '0' && c[r - 1] <= '9')//0到9
                {
                    sum += ci(flag) * (c[r - 1] - '0');
                    flag++;
                }
                else if(c[r - 1] >= 'a' && c[r - 1] <= 'f')//10到15
                {
                    sum += ci(flag) * (c[r - 1] - 'a' + 10);
                    flag++;
                }
                else if(c[r - 1] >= 'A' && c[r - 1] <= 'F')//10到15
                {
                    sum += ci(flag) * (c[r - 1] - 'A' + 10);
                    flag++;
                }
                r--;
            }
            if(sum == 0) printf("%d\n", sum);
            else if(top) printf("-%d\n", sum);
            else printf("%d\n", sum);
        }
        return 0;
    }
    展开全文
  • 十六进制转换成八进制:每三位的十六进制转换成十进制,对应的十进制在%o的作用下转换成八进制:代码如下:#include #include #include #include using namespace std; char a[100010]; int f(char c) { if(isalpha...

    十六进制转换成八进制:每三位的十六进制转换成十进制,对应的十进制在%o的作用下转换成八进制:代码如下:

    #include<iostream>
    #include<cstdio>
    #include<ctype.h>
    #include<cstring>
    using namespace std;
    char a[100010];
    int f(char c) {
    	if(isalpha(c)) return c-'A'+10;
    	else return c-'0';
    }
    int main() {
    	int n,i;
    	scanf("%d",&n);
    	while(n--) {
    		scanf("%s",a);
    		int len= strlen(a);
    		if(len%3==1) {
    			printf("%o",f(a[0]));
    			i=1;
    		}
    		else if(len%3==2) {
    			printf("%o",f(a[0])*16+f(a[1]));
    			i=2;
    		}
    		else {
    			printf("%o",f(a[0])*256+f(a[1])*16+f(a[2]));
    			i=3;
    		}
    		
    		for(; i<len; i+=3) printf("%04o",f(a[i])*256+f(a[i+1])*16+f(a[i+2]));
    		printf("\n");
    	}
    	return 0;
    }

    八进制转换成十六进制:每两位的八进制转换成十进制,对应的十进制在%x的作用下转换成十六进制:代码如下:

    #include<iostream>
    #include<cstdio>
    #include<ctype.h>
    #include<cstring>
    using namespace std;
    char a[100010];
    int f(char c) {
    	 return c-'0';
    }
    int main() {
    	int n,i;
    	scanf("%d",&n);
    	while(n--) {
    		scanf("%s",a);
    		int len= strlen(a);
    		if(len%2==1) {
    			printf("%x",f(a[0]));
    			i=1;
    		}
    		else {
    			printf("%x",f(a[0])*8+f(a[1]));
    			i=2;
    		}
    		
    		for(; i<len; i+=2) printf("%x",f(a[i])*8+f(a[i+1]));
    		printf("\n");
    	}
    	return 0;
    }


    展开全文
  • 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...

    1.十进制转R进制

    1.1 十进制转二进制

    十进制整数转二进制

    十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。

    例题: 135D = ______ B

    **解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 0111B.
    这里写图片描述

    图1.十进制整数转二进制

    十进制小数转二进制

    十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。

    具体做法是:

    用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例题: 0.68D = ______ B(精确到小数点后5位)

    **解析:**如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到达到题目要求精度。得到结果:0.10101B.

    在这里插入图片描述

    图2.十进制小数转二进制

    1.2 十进制转八进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 10.68D = ______ Q(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整,直到达到题目要求精度。得到结果:12.534Q.

    这里写图片描述

    图3.十进制转八进制

    1.3 十进制转十六进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 25.68D = ______ H(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H.

    这里写图片描述

    图4.十进制转十六进制
    # 2.R进制转十进制 ## 2.1 二进制转十进制 **方法为:**把二进制数按权展开、相加即得十进制数。(具体用法如下图)

    例题: 1001 0110B = ______ D

    **解析:**如下图所示。得到结果:150D.

    这里写图片描述

    图5.二进制转十进制

    2.2 八进制转十进制

    八进制转十进制的方法和二进制转十进制一样。

    例题: 26Q = ______ D

    **解析:**如下图所示。得到结果:22D.

    这里写图片描述

    图6.八进制转十进制

    2.3 十六进制转十进制

    例题: 23daH = ______ D

    **解析:**如下图所示。得到结果:9178D.

    这里写图片描述

    图7.十六进制转十进制

    3.二进制转八进制

    二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。

    例题: 1010 0100B = ____Q

    **解析:**计算过程如下图所示。得到结果:244Q.

    这里写图片描述

    图8.二进制转八进制

    4.二进制转十六进制

    二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。

    例题: 1010 0100B = ____H

    **解析:**计算过程如下图所示。得到结果:a4H.

    这里写图片描述

    图9.二进制转十六进制

    5.工欲善其事,必先利其器

    下面的表格是8位二进制所对应的十进制数值,对进制转换以及类似题目的理解非常有用:

    1 1 1 1 1 1 1 1 B
    128 64 32 16 8 4 2 1 D

    注:B:二进制
           D:十进制


    例题: 135D = ______ B

    **解析:**有了上面二进制对应十进制数值的表格,我们就可以将题目给的十进制135拆分为:128+7,再从表格中找到对应的数值,拼凑即可得到答案。
    135D = 128D + 7D = 1000 0111B

    展开全文
  • 十进制转换成十六进制、八进制、二进制 举例验证十进制转二进制,十进制转换十六进制: 代码演示: #include <stdio.h> #include <stdlib.h> #include <string.h> void trans(char array[],int ...

    十进制转换成十六进制、八进制、二进制

    举例验证十进制转二进制,十进制转换十六进制:
    在这里插入图片描述

    代码演示:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void trans(char array[],int number,int scale,int * len)
    {
    	int i = 0;
    	while(number)
    	{
    		array[i] = number % scale;
    		if(array[i] > 9)
    		{
    			array[i] += 'A' - 10;
    		}
    		else
    		{
    			array[i] += '0';
    		}
    		number = number / scale;
    		i++;
    	}
    	*len = i;
    }
    
    int main()
    {
    	int number = 0;
    	printf("input a number:");
    	scanf("%d",&number);
    
    	int scale = 0;
    	printf("input scale:");
    	scanf("%d",&scale);
    
    	char * array = NULL;
    	array = malloc(sizeof(char)*32);
    	memset(array,0,sizeof(array));
    	int i = 0;
    	
    	switch(scale)
    	{
    	case 2:
    		trans(array,number,scale,&i);
    		break;
    	case 8:
    		trans(array,number,scale,&i);
    		break;
    	case 16:
    		trans(array,number,scale,&i);
    		break;
    	}
    	while(i--)
    	{
    		printf("%c",array[i]);
    	}
    	printf("\n");
    }
    

    总结:1.一直再想局部变量的问题(离开函数内存就被释放),所以在堆区开辟了一块内存,一直到程序结束才释放内存。2.当转换大于9的数字的时候,需要A,B,C,D,E,F.所以要用到ASCII码,+‘0’ 和 +‘A’ -10 用的就巧妙啦。

    展开全文
  • 16进制转10进制问题及代码:/**问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。*样例输入FFFF*样例...
  • 展开全部十六进制转十进制:从个位起第i位乘以32313133353236313431303231363533e58685e5aeb93133336338343116的i-1次方比如0x233 = 2*16^2 + 3*16^1 + 3*16^0 = 512 + 48 + 3 = 5630x666 = 6*16^2 + 6*16^1 + 6*16^...
  • java中带符号十六进制转换成十进制详解代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){ String strHex="ffff"; int ia = Integer.parseInt(strHex,16); //不带符号十六进制转换十...
  • 本文收藏整理在SQL中使用sql实现进制转换,如:十进制转为十六进制、十六进制转为十进制、整数转换成二进制、数字转换成16进制的各种方法,一一介绍如下:第一、十进制转为十六进制 DECLARE @binary varbinary(255)...
  • C# 进制转换(二进制、十六进制、十进制互转) 原文:C# 进制转换(二进制、十六进制、...请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制...
  • [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)]二进制 to 十进制 : int(str,n=)def bin2dec(string_num):return str(int(string_num, ))十六进制 to 十进制def hex2dec(string_...
  • 以前将十六进制转换成十进制,总是先将十六进制转换成二进制,然后再转换成十进制。今天看到一个题目:将一个十六进制的数转换成一个整数。在网上搜寻,发现除了这样转换以外,还可以像二进制转换成十进制一样,比如...
  • // 十六进制转二进制 public String HToB(String a) { String b = Integer.toBinaryString(Integer.valueOf(toD(a, 16))); return b; ...// 将二进制转为十进制再从十进制转为十六进制 String
  • 蓝桥杯--------由蓝桥杯引起的关于制度转换问题的思考 试题 基础练习 十六进制转十...首先我的思路是:准备一个字典,当十六进制转换时,遇到字母可以转换成相应数字,接着由数字的计算,转换成十进制 代码如下: impor
  • 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。...例如,将八进制数字 53627 转换成十进制: 53627 = 5×84 + 3
  • Java:十六进制转换成十进制

    万次阅读 2018-11-01 09:48:36
     从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。   *样例输入   FFFF   *样例输出   65535  *...
  • 十六进制转换成十进制

    千次阅读 2015-02-27 09:55:45
    问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15.../*十六进制转化成十进制*/ #include #include char _16_string[10]; int main(int
  • #coding=utf-8import reprint("十进制转换成二进制、八进制、十六进制")num = input("请输入一个十进制的整数:")pattern = re.compile(r'[^0-9]+')if(re.search(pattern,num)):print("输入的格式不正确")else:num = ...
  • 今天,由于需要模拟一个RFID卡的过车记录过程!其中有一个需要模拟... 于是在SQL Server中写下了两个关于16进制转换的函数,以随机的来生成所需RFimport java.awt.Color;public class OperaColor extends Color {...
  • 进制转换 写出一个程序,接受一个十六进制的数值字符串,输出该...10解题十六进制转换成十进制如下 定义 16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12...
  • 注:本文所有代码均经过Python 3.7实际运行检验,...Python语言一样可以用二进制、八进制和十六进制来表示整数,与十进制表示法不同,这些进制法的表示需要在整数字面值加一个前缀即可。 十进制demical——无前缀。...
  • 十六进制数转换成十进制数的函数
  • NULL 博文链接:https://mactavish.iteye.com/blog/1731735
  • 十进制转换成十六进制、16进制转2进制

    千次阅读 多人点赞 2014-04-29 09:55:16
    #include #include #include #include int main() { int i,v; char bs[33]; char b[33]; char hs[9]; char h[9]; char s[4]; char *e;...// 十进制整数转二进制串; i=1024; ltoa(i,b,2
  • {*----------------------------------------------... 十六进制转换成十进制函数 @param @return -------------------------------------------------} function HexToInt(str:string; var Value: integer): ...
  • 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由09、大写字母AF组成的字符串...先将十六进制转换成

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,831
精华内容 1,132
关键字:

十六转换成十进制