用c语言输入键盘上的字符后转换成十六进制输出

用c语言输入键盘上的字符后转换成十六进制输出
悬赏分:10 | 提问时间:2010-9-13 10:26 | 提问者:745922085 | 问题为何被关闭
其他回答 共3条

#include <stdio.h>
#include <conio.h>//getch()的头文件

int main()
{
     char c;
     printf("请输入一个字符:");
     c = getch();//getch()获取输入的字符, 输入之后立即处理,不需要按Enter之类的。
     printf("十六进制:%x\n", (int)c);//(int)c,把c转换为int型.%x,输出格式为十六进制
     return 0;
}

回答者: lynwey | 二级 | 2010-9-13 10:37

;----------------------------------------------------------------------
;程序名称:DIS_DEC
;功能:通过DOS功能调用显示十进制数最大65535
;入口参数:AX
;出口参数:无
;临时空间:CX
;调    用:HEXTOASCII
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
DIS_DEC PROC
        MOV     DX, 0
        MOV     BX, 10000
        DIV     BX              ;(0,AX)/10000,取商
        MOV     CX, DX          ;CX临时保存余数
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;2号功能调用单字符显示万位数,待显示字符ASCII码在DL中
        MOV     AH, 2           ;2号功能调用
        INT     21H             ;INT 21H进行调用
        
        MOV     DX, 0           
        MOV     BX, 1000        
        MOV     AX, CX
        DIV     BX              ;(0,CX)/1000,取商
        MOV     CX, DX          ;CX临时保存余数        
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示千位数
        MOV     AH, 2           
        INT     21H                  
        
        MOV     BL, 100
        MOV     AX, CX        
        DIV     BL              ;(AX)/100,取商
        MOV     CH, AH          ;CH临时保存余数  
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示百位数
        MOV     AH, 2          
        INT     21H             
        
        MOV     BL, 10
        MOV     AH, 0
        MOV     AL, CH        
        DIV     BL              ;(0,CH)/10,取商
        MOV     CH, AH          ;CH临时保存余数  
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示十位数
        MOV     AH, 2           
        INT     21H             
        
        MOV     AL, CH
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示个位数
        MOV     AH, 2           
        INT     21H               
        
        MOV     DL, 0DH         ;显示回车符
        MOV     AH, 2
        INT     21H
        MOV     DL, 0AH         ;显示换行符
        INT     21H                
        RET
        ENDP
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;程序名称:HEX2TOASCII
;功能:2位十六进制数转ASCII码
;入口参数:AL
;出口参数:AX
;临时空间:CH:暂寸数据,CL:移位次数
;调    用:HEX1TOASCII:一位HEX转换ASCII码
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
HEX2TOASCII PROC
        MOV     CH, AL          ;暂存数据
        AND     AL, 0F0H        ;取高4位
        MOV     CL, 4
        SHR     AL, CL          ;右移4位进行转换
        CALL    HEX1TOASCII     ;转换高4位的ASCII码
        MOV     AH, AL          ;保存结果
        MOV     AL, CH          ;取原待转换数据
        AND     AL, 0FH         ;取低4位数据
        CALL    HEX1TOASCII     ;转换低4位的ASCII码
        RET
        ENDP
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;程序名称:HEX1TOASCII
;功能:1位十六进制数转ASCII码
;入口参数:AL
;出口参数:AL
;临时空间:无
;调    用:
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
HEX1TOASCII PROC
        CMP     AL, 9
        JBE     BELOW9          ;小于等于9,加30H
        ADD     AL, 07H         ;大于9,加37H
BELOW9: ADD     AL, 30H
        RET
        ENDP
;----------------------------------------------------------------------


如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,我们可以通过scanf函数接收键盘输入字符,并使用"%c"格式化指示符将其赋值给一个字符变量。 首先,我们需要定义一个字符变量来存储键盘输入十六进制字符,例如用char类型的变量hex表示。 然后,我们可以使用scanf函数接收键盘输入字符,并使用"%c"格式化指示符将其赋值给hex变量,示例如下所示: ```c #include <stdio.h> int main() { char hex; printf("请输入一个十六进制字符:"); scanf("%c", &hex); int decimal; if (hex >= '0' && hex <= '9') { decimal = hex - '0'; // 将字符转换为对应的数字 } else if (hex >= 'A' && hex <= 'F') { decimal = hex - 'A' + 10; // 将字符转换为对应的数字 } else if (hex >= 'a' && hex <= 'f') { decimal = hex - 'a' + 10; // 将字符转换为对应的数字 } else { printf("输入错误!\n"); return 0; } printf("对应的十进制数为:%d\n", decimal); return 0; } ``` 以上代码中,我们首先判断输入字符是否在合法的十六进制字符范围内。对于0-9的字符,我们可以直接与字符'0'相减得到对应的十进制数;对于A-F和a-f的字符,则可以与'A'或'a'相减加上10,得到对应的十进制数。 最后,通过printf函数将计算得到的十进制数输出到屏幕上。请注意,以上代码只能接收输入的第一个字符,并且只处理一个字符的情况。如果需要接收多位字符或处理多个字符,需要进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值