百科问答小站 logo
百科问答小站 font logo



编程序,写一个函数,输入一个十六进制数,输出相应的十进制数。怎么做啊? 第1页

  

user avatar   stick-long 网友的相关建议: 
      

/*【C语言】,不带容错校验功能。*/

#include<stdio.h>

int main()

{

baiint a=0;

int i=0;

scanf("%x",&a);

printf("%d",a);

return 0;

}

//*****C++语言*******

#include <stdio.h>

#include <string.h>

#include <math.h>

int main()

{

char strHex[9];

int i = 0, len = 0, temp = 0;

__int64 nDec = 0;

gets(strHex);

len = strlen(strHex);

for (i = 0; strHex[i] != ''; ++i)

{

switch(strHex[i])

{

case 'A': temp = 10; break;

case 'B': temp = 11; break;

case 'C': temp = 12; break;

case 'D': temp = 13; break;

case 'E': temp = 14; break;

case 'F': temp = 15; break;

default: temp = strHex[i]-'0'; break;

}

nDec += (temp*pow(16,len-1-i));

}

printf("%I64d",nDec);

return 0;

}

;********8086汇编语言**************

DATAS SEGMENT

bin dw 10 dup(?) ;存放二进制结果

buf db 5 dup(?) ;存放十进制数 各个数位上的数值 如100,存放为 1,0,0

msg1 db 'please input a hex number',13,10,'$'

msg2 db 'the dec number:',13,10,'$'

crlf db 13,10,'$' ;回车换行

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

mov bx,0 ;初始化bx

LEA dx,msg1 ;输出提示字符串

mov ah,9

int 21h

input:

mov ah,1 ;输入一个字符

int 21h

sub al,30h ;把al中的ascii码转换成数值

jl init

cmp al,10 ;输入的数在0-9之间跳转

jl toBin

sub al,27h ;再转换为a-f

cmp al,0ah ;输入的字符比a小

jl init ;结束输入

cmp al,10h ;输入的字符比f大

jge init ;结束输入

toBin: ;转换为二进制,把输入组合成意义上的数值

mov cl,4

shl bx,cl ;bx左移4位

mov ah,0

add bx,ax ;把输入后并从ascii码转换来的值与bx相加

mov bin,bx ;转换成二进制数后存到内存bin

jmp input ;继续输入

init: ;初始化,准备转换

mov ax,bin

mov bx,10

mov si,4 ;循环四次,最大到万位

toDec: ;转为各个数位上的数值,如100转换为1,0,0 百位为1...

mov dx,0

div bx ;除10法得到各个位上的数值

mov [buf+si],dl ;余数为该位上的值,第一次循环为个位,第二次为十位...;存到内存中

dec si

cmp ax,0 ;商是否为0,为0算法结束

ja toDec

lea dx,crlf ;显示提示

mov ah,9

int 21h

lea dx,msg2

mov ah,9

int 21h

output: ;输出内存中存放的各个数位上的数值

inc si

mov dl,[buf+si]

add dl,30h ;转为ascii

mov ah,2

int 21h

cmp si,4

jb output

mov ah,1

int 21h

MOV AH,4CH

INT 21H

CODES ENDS

END START

#***********Python代码*********

把十六进制的字串转为十进制数字:

>>> print int('ff', 16)

把十进制数字转换为以十六进制表示之字串,可调用内置的hex()函数:

>>> print hex(255)

0xff




  

相关话题

  学 C 语言用 break 和 continue 是不是坏的习惯? 
  C语言中while(a=10);和while(a==10);有什么区别? 
  Python和 C 语言有什么不同? 
  int *p=new int,当free(p)时free函数是怎么知道要释放4个字节而不是5个的? 
  三进制是否比二进制更贴近人脑思维?为什么三进制计算机中途夭折后,再无人提起? 
  三进制是否比二进制更贴近人脑思维?为什么三进制计算机中途夭折后,再无人提起? 
  设计一个同步21进制计数器,需要 几个触发器。? 
  c语言中的sizeof()是如何分辨数组名和指针的? 
  为什么人类可以长期使用不同数位进制,而丝毫不显得凌乱,还切换自如 ? 
  学 C 语言用 break 和 continue 是不是坏的习惯? 

前一个讨论
安徽一大学生突发疾病医生未问诊建议转院,转诊途中死亡,医生或将承担哪些责任?
下一个讨论
医学生如何复习?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利