十六进制与十进制之间的相互转换

首先说一下十六进制转换为十进制的方法

每一位数乘以十六的位数-1次方和即为十进制,即:

sum+=第几位*pow(16,位数-1-第几位);

实行代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 int main(){
 5     string str;
 6     cin>>str;
 7     int len=str.size();
 8     long long sum=0;
 9     for(int i=0;i<len;i++){
10         if(str[i]==‘1‘){
11             sum+=1*pow(16,len-1-i);
12             continue;
13         }
14         if(str[i]==‘0‘){
15             sum+=0*pow(16,len-1-i);
16             continue;
17         }
18         if(str[i]==‘2‘){
19             sum+=2*pow(16,len-1-i);
20             continue;
21         }
22         if(str[i]==‘3‘){
23             sum+=3*pow(16,len-1-i);
24             continue;
25         }
26         if(str[i]==‘4‘){
27             sum+=4*pow(16,len-1-i);
28             continue;
29         }
30         if(str[i]==‘5‘){
31             sum+=5*pow(16,len-1-i);
32             continue;
33         }
34         if(str[i]==‘6‘){
35             sum+=6*pow(16,len-1-i);
36             continue;
37         }
38         if(str[i]==‘7‘){
39             sum+=7*pow(16,len-1-i);
40             continue;
41         }
42         if(str[i]==‘8‘){
43             sum+=8*pow(16,len-1-i);
44             continue;
45         }
46         if(str[i]==‘9‘){
47             sum+=9*pow(16,len-1-i);
48             continue;
49         }
50         if(str[i]==‘A‘){
51             sum+=10*pow(16,len-1-i);
52             continue;
53         }
54         if(str[i]==‘B‘){
55             sum+=11*pow(16,len-1-i);
56             continue;
57         }
58         if(str[i]==‘C‘){
59             sum+=12*pow(16,len-1-i);
60             continue;
61         }
62         if(str[i]==‘D‘){
63             sum+=13*pow(16,len-1-i);
64             continue;
65         }
66         if(str[i]==‘E‘){
67             sum+=14*pow(16,len-1-i);
68             continue;
69         }
70         if(str[i]==‘F‘){
71             sum+=15*pow(16,len-1-i);
72             continue;
73         }
74     }
75     cout<<sum<<endl;
76     return 0;
77 } 

十进制转换为十六进制

由于十六进制的表示方法包含字符,我们可借用一个字符数组ch[]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘}

每当十进制数对16取余时即可对应其中的字符来找到十六进制的表示方法。

实行代码:

#include<bits/stdc++.h>
using namespace std;

int main(){
    char ch[]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
    long long n;
    stack<char> s;
    cin>>n;
    while(n>=16){//注意等于时也要取模,即留零进一
        s.push(ch[n%16]);
        n/=16;
    }
    s.push(ch[n]);
    while(!s.empty()){
        cout<<s.top();
        s.pop();
    }
    cout<<endl;
    return 0;
}
时间: 2024-12-19 18:24:48

十六进制与十进制之间的相互转换的相关文章

二进制、十进制、十六进制、字符串之间的相互转换

1. 字节转10进制 直接使用(int)类型转换. /* * 字节转10进制 */ public static int byte2Int(byte b){ int r = (int) b; return r; } 2. 10进制转字节 直接使用(byte)类型转换. /* * 10进制转字节 */ public static byte int2Byte(int i){ byte r = (byte) i; return r; } 3. 字节数组转16进制字符串 对每一个字节,先和0xFF做与运算

十六进制与十进制之间的转换

/*编写函数htoi(s),把由十六进制数字组成的字符串(包含可选的请前缀0x或0X)转换为与之等价的 整型值.字符串中允许包含的数字包括:0~9,a~f以及A~F.*/ /*利用ASCII的差值*/ #include<stdio.h> #include<math.h> int htois(char s[]) { int length=0,i=0; double num; while(s[length]!='\0') length++; while(s[i]!='\0')    

二进制,八进制,十进制与十六进制之间的相互转换

功能:完成二进制,八进制,十进制与十六进制之间的相互转换(以字符数组形式输入). 要点: 字符数组反序:strrev(char *str); 字符数组转换为十进制整数:atoi(char *str); map容器完成字符到数值的转换: 字符数组完成数值到字符的转换: 1位16进制数可转换为4位2进制数 1位8进制数可转换为3位2进制数 使用右移和与运算代替除法和取余 #include<cstdio> #include<cstring> #include<cstdlib>

[原创]PostgreSQL中十进制、二进制、十六进制之间的相互转换

在PostgreSQL中,二进制.十进制.十六进制之间的转换是非常方便的,如下: 十进制转十六进制和二进制 mydb=# SELECT to_hex(10); to_hex -------- a (1 row) mydb=# SELECT 10::bit(4); bit ------ 1010 (1 row) 十六进制转十进制和二进制 mydb=# SELECT x'A'::int; int4 ------ 10 (1 row) mydb=# SELECT x'A'::bit(4); bit -

as3 二进制、八进制、十进制、十六进制之间的相互转换

var a:int=1234;//十进制 trace("十进制转二进制",a.toString(2));//二进制 trace("十进制转八进制",a.toString(8));//八进制 trace("十进制转十六进制",a.toString(16));//十六进制 var b:String="10011010010";//二进制 var b1:String="2322";//八进制 var b2:Str

BCD码、十六进制与十进制互转

在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间的互换. #include <stdio.h> #include <string.h> ///////////////////////////////////////////////////// // //功能:二进制取反 // //输入:const unsigned char *sr

C#List&lt;string&gt;和string[]之间的相互转换

 一.LIST概述 所属命名空间:System.Collections.Generic      public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable List<T>类是 ArrayList 类的泛型等效类.该类使用大小可按需动态增加的数组实现 IList<T> 泛型接口.  泛型的好处: 它为使

十六进制转十进制函数_C编程

/**************************十六进制转十进制函数**************************//*函数原型:uint htd(uint a)/*函数功能:十六进制转十进制/*输入参数:要转换的数据/*输出参数:转换后的数据/*调用模块:无/******************************************************************/ unsigned int htd(unsigned int a){    unsigned

【蓝桥杯】基础练习 十六进制转十进制

基础练习 十六进制转十进制 时间限制:1.0s   内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF 样例输出 65535 无语...现在也没明白这样为什么不对 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using