Note:Your
choice
is
C
IDE
*/
#include
"stdio.h"
#include"string.h"
void
main()
{
char
s[100]
int
i,tennum=0
scanf("%s",s)/*输入16进制,10-15用A-F表示*/
for(i=0i='A')s[i]=10+s[i]-'A'
tennum=tennum*16
tennum=tennum+s[i]-'0'
}
printf("The
result
is
%d\n",tennum)/*输出10进制*/
}
这是将C16进制转换为ASCII的代码
string[]
keys
=
Console.ReadLine().Split('
')//读取用空格分成的16进制码
foreach
(string
key
in
keys)
{
int
code
=
Convert.ToInt32(key,
16)//将16进制字符串转换成其ASCII码(实际是Unicode码)
char
c
=
(char)code//取得这个Unicode码表示的char(强制转换就行)
Console.Write(c.ToString())//输出。
}
Console.ReadLine()
1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。
另外定义了一个数组array[8],用于存放输入的八位二进制数。
2、然后使用了一个for循环语句,用于输入八位二进制数。
3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方。
4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环。
5、在power函数中,如果b等于零,即指数为零,则返回1,否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回。
6、最后看一下运行的结果。
1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和。另外定义了一个数组array[8],用于存放输入的八位二进制数。
2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加了一个1,即%1d,这样是好连续的输入八个数,如果没有中间的1,则编译器会认为你只输入了一个数,即那个八位数。然后使用printf函数输出,并且调用Sum函数,数组名作为实参。
3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方,其实这里可以调用库函数pow,但是老师要求不调用库函数,因此就自己写了一个求2的n次方的函数,在这里n为指数,term为每一位数转换为十进制后的的数,如1*(2*2),sum为总和。
4、接着,使用了一个for循环语句,i用于控制循环的次数,n从最高的指数7开始每次循环减一,如果指数大于或等于零的,就进行循环,因为二进制的最后一位转换为十进制数时指数就是零,此后循环就结束。调用power函数时,将n作为实参,最后将和返回,即将sum作为返回值返回给Sum函数。
5、在power函数中,如果b等于零,即指数为零,则返回1,否则就进入一个循环,j用于控制循环次数,有疑问的可以用笔算算乘2的个数对不对,最后将i返回。
6、最后看一下运行的结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)