16进制转10进制编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16进制转10进制编程相关的知识,希望对你有一定的参考价值。
/* 十六进制数转换为十进制数 *
/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;
扩展资料:
计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。
编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序。
然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。
参考技术A //其实,在输入输出时下功夫是最省事的,以下是例子#include "stdafx.h"
#include "stdio.h"
int main(int argc, char* argv[])
int d;
scanf("%x",&d); //以十六机制的格式输入(如果%后是大写X,对应的字母就输入大写)
printf("%d\n",d); //以十进制的格式输出
/*如果想转成字符串,还可以如此:
char ch[10];
sprintf(ch,"%d",d);
printf("%s\n",ch);*/
return 0;
参考技术B #define N 8
void tran(int num,int k)
int arr[N],i;
for (i=0;i <N;i++)
arr[i]=num%k;
num=num/k;
if (num==0)
break;
printf("转换为%d进制数为: ",k);
for (;i>=0;i--)
switch (arr[i])
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
printf("\n\n\n");
void main()
int num,choo;
loop: printf("请选择功能:0.退出 1.十进制转二进制 2.十进制转八进制 3.十进制转十六进制\n");
scanf("%d",&choo);
switch (choo)
case 1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break;
default :
printf("输入有误!请重新输入!\n");
goto loop;
参考技术C //十六进制转换成十进制
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
int retTransfor(char c)
if ((c>='0')&&(c<='9')) return c-'0';
else
if ((c>='a')&&(c<='f')) return c-'a'+10;
else if ((c>='A')&&(c<='F')) return c-'A'+10;
return 0;
int main()
string str;
int i,num=0;
cout<<"请输入一个十六进制数:"<<endl;
cin>>str;
cout<<"输入的数为"<<str<<endl;
for (i=0;i<str.length();i++) num = num*16 + retTransfor(str[i]);
cout<<"转换后为十进制数:"<<num<<endl;
system("pause");
return 1;
本回答被提问者和网友采纳 参考技术D #define N 8
void tran(int num,int k)
int arr[N],i;
for (i=0;i <N;i++)
arr[i]=num%k;
num=num/k;
if (num==0)
break;
printf("转换为%d进制数为: ",k);
for (;i>=0;i--)
switch (arr[i])
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
printf("\n\n\n");
void main()
int num,choo;
loop: printf("请选择功能:0.退出 1.十进制转二进制 2.十进制转八进制 3.十进制转十六进制\n");
scanf("%d",&choo);
switch (choo)
case 1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break;
default :
printf("输入有误!请重新输入!\n");
goto loop;
另外,站长团上有产品团购,便宜有保证
php编程:将26位字母进制转换为10进制数字,如何做?
将26位字母进制转换为10进制数字,如何做?
比如把 asdfggghe 这个个26进制的数,如何转为10进制的数字
10进制结果=∑各位上的值*(进制数^各位权值)
a^b表示a的b次方。
比如你说的26进制
a->1
s->19
d->4
那么asd=1*(26^2)+19*(26^1)+4*(26^0)=1174(10进制)
如果是8进制数456=4*(8^2)+5*(8^2)+6*(8^0)=302(10进制)
分太少,不写源程序了,建立索引数组$arr[a]=1$,arr[b]=2..
再把输入的字母拆成单字符倒序数组使得$single[2]=a,$single[1]=s,$single[0]=d,按上面方法权值相加。
你懂的。 参考技术A <?php
$str="abcdefg";//写你想要算的字符串;
$v;
function getv($s)
$arr=str_split($s,1);
for ($i=0;$i<strlen($s);$i++)
$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;
echo $v;
function getw($w)
$x=1;
for ($i=0;$i<$w;$i++)
$x=26*$x;
return $x;
function gett($ch)
return (ord($ch)-96);
echo getv($str);
?> 虽然不难,但是麻烦.这题没意思;
注:getv计算总结果; gett计算字母代表的数字; getw计算权值;本回答被提问者采纳 参考技术B <?php
$str="abcdefg";//写你想要算的
字符串
;
$v;
function
getv($s)
$arr=str_split($s,1);
for
($i=0;$i<strlen($s);$i++)
$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;
echo
$v;
function
getw($w)
$x=1;
for
($i=0;$i<$w;$i++)
$x=26*$x;
return
$x;
function
gett($ch)
return
(ord($ch)-96);
echo
getv($str);
?>
虽然不难,但是麻烦.这题没意思;
注:getv计算总结果;
gett计算
字母
代表的数字;
getw计算
权值
; 参考技术C 26位字母进制?
它不是26进制,是不是要转换他们的ASCII码呢?
如果是16进制转10进制的话,使用函数 hexdex 就可以了。
以上是关于16进制转10进制编程的主要内容,如果未能解决你的问题,请参考以下文章