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

/*编写函数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‘)                  /*直接计算实际的值*/

{

if(s[i]>=‘0‘&&s[i]<=‘9‘)

num+=(s[i]-‘0‘)*pow(16.0,length-i-1);

else if(s[i]>=‘a‘&&s[i]<=‘f‘)

num+=(s[i]-‘a‘+10)*pow(16.0,length-i-1);

else if(s[i]>=‘A‘&&s[i]<=‘F‘)

num+=(s[i]-‘A‘+10)*pow(16.0,length-i-1);

i++;

}

return num;

}

int main()

{

char a[1000],b,temp;

printf("请输入一个有十六进制数字组成的字符串:\n");

scanf("%s",&a);

printf("%d",htois(a));

while(1);

return 0;

}

时间: 2024-12-25 02:42:21

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

十进制、十六进制、二进制之间的转换(仅作记录)

二进制和十六进制的互相转换比较重要.不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然. 我们也一样,只要学完这一小节,就能做到. 首先我们来看一个二进制数:1111,它是多少呢? 你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15. 然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8.4

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

首先说一下十六进制转换为十进制的方法 每一位数乘以十六的位数-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

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

我们从小学习使用的阿拉伯数字就是十进制的,这大概是因为我们有十根手指.十个脚趾,便于计数吧.而计算机和我们不同,它只有开和关这两种状态,也就是0和1,所以计算机使用二进制会更方便.在十进制里,每一位上的数值都和这个位上特定的量值相关联.比如123这个数,最低位的数值为3,它和这个位的量值即1(10º)相关联:十位数2和10(10¹)相关联:百位数1和100(10²)相关联,整个数的数值就等于(1 * 10² + 2 * 10¹ + 3 * 10º).同理,二进制的数值也是这样计算的,不过它每一位

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

  最近复习软考各种进制之间的转换着实让人头疼,今天把常用的几种进制之间的转换问题简单做个总结,希望能够对大家有所帮助.   二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0    1     2    3     4    5     6    7       二进制:000 001 010 011 100 101 110 111   实例:   27.651(8)  010111.110101001(2)   1001.000

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

二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0    1     2    3     4    5     6    7       二进制:000 001 010 011 100 101 110 111   实例:   27.651(8)  010111.110101001(2)   1001.000101(2)  11.05(8) 二进制与十进制的转换  二进制转换为十进制就是将二进制第i位的值乘以2的i-1次方.    

[Swift]二进制、十进制、十六进制之间的转换

整数文字可以写成: 一个十进制数,无前缀,Decimal,简写为D 一个二进制数,有0b前缀,Binary,简写为B 一个八进制数,有0o前缀,Octal,简写为O 一个十六进制数,有0x前缀,Hexadecimal,简写为H 1.二进制和十进制之间的转换 十进制转二进制 1 var str = String(31,radix:2) 2 print(str) 3 //Print 11111  二进制转十进制  1 extension String{ 2 func BinaryToDecimal(

C语言再学习——C语言中进制之间的转换

十进制转换为二进制:利用除二取余倒序法 二进制转换为十进制:利用每位二进制数对应的幂乘积. 例如:110 = 1*2^2+1*2^1+0*2^0 十六进制和十进制之间的转换,先转换为二进制后在转换为十进制.(方法:三位一体) 八进制和十进制之间的转换,先转换为二进制后在转换为十进制.(方法:四位一体) 十六进制: A = 10 = 1010b B = 11 = 1011b C = 12 = 1100b D = 13 = 1101b E = 14 = 1110b F = 15 = 1111b 内存

java中进制之间的转换

//十进制转其他进制 Integer.toHexString(10); //将10转换为十六进制,返回字符串类型 Integer.toOctalString(10); //将10转为八进制,返回字符串类型 Integer.toBinaryString(10); //将10转为二进制,返回字符串类型 //其他进制转十进制 //十六进制转十进制,例如:0xFFFF Integer.valueOf("FFFF",16).toString(); //valueOf()方法返回Integer类型

不同进制之间的转换

参考文章地址:http://www.cnblogs.com/o-andy-o/p/3410356.html 一. 二进制与十进制之间的转换     a.二进制转十进制(不分整数和小数从最后一位算起,每一位上的数乘以2的几次方,这个次数由这个数字所在的位置决定,从零位开始,然后相加)         01101011.001 转十进制: 第-3位   1乘2的-3次方=0.125第-2位   0乘2的-2次方=0 第-1位   0乘2的-1次方=0第0位    1乘2的0次方=1第1位    1乘