有时候我们可能会需要做十六进制数与ascii码的转换,但是上网搜索转换器需要耗费一定时间,有时候还不一定能满足自己的需要

例如,如何将'6a 6b 6c 6d'转换为相应的ascii码字符?

可能我们可以去查ascii码表,但是一来,查找耗时间,第二呢,如果我们需要同时查找多个十六进制的对应的ascii码值,总不能一个个查吧。
所以,我们可以自己写一个简单的代码,实现多十六进制数与ascii的转换。

1、十六进制转换为ascii

def main():
    try:		#为确保健壮性,需要对异常进行处理
        def hexToAscii(hN):
            n=map(lambda x:chr(int(x,16)),hN.split(' '))
            for i in n:
                print(i,end="")			#对映射进行遍历
        n = input('输入十六进制数,以空格为分隔符:')
        hexToAscii(n)
        print()
    except:	 #不正常的输入的情况下,会提示你重新输入,并再次执行主函数
            print("请输入正确的数!")
            main()      
main()

lambda函数是匿名函数,可以对输入的值进行处理

split()将输入的字符串进行分割,以’ '为分隔符,将字符串分割为数组

map函数有两个参数,可以对指定的序列做出映射,简单来说,就是可以对序列进行处理,然后返回一个map对象

int(x,16)将十六进制数转换为十进制数
chr()实现的功能就是将十进制数转换为ascii码
合起来就是map(lambda x:chr(int(x,16),hN.split(’ '))

例如,通过以下代码,返回序列中每一个值与2的乘积
在这里插入图片描述
十六进制转换为十进制
在这里插入图片描述
字符串分割
在这里插入图片描述
最后实现这样的效果
在这里插入图片描述

2、ascii转十六进制

def main():
    try:
        def AsciiToHex(string):
            s = map(lambda x:hex(ord(x)).strip('0x'),string)
            for t in s:
                print(t,end=" ")
        string = input('输入字符串:')
        AsciiToHex(string)
        print()
    except:
        print("请输入正确的数!")
        main()
main()

map()也可以对字符串做出映射
在这里插入图片描述
hex(ord(x))将ord(x)得到的int类型的十进制数转换为十六进制
在这里插入图片描述
string.strip(‘0x’)对得到的字符串进行处理,去除’0x’
最后的效果:
在这里插入图片描述

3、批处理文件

@echo off
chcp 65001
title ASCII码转换
color f2

:menu
echo			++++选项++++
echo 		1 ascii to hex 
echo 		2 hex to ascii
echo 		3 exit
set /p number=输入序号:
if %number%==1 goto ascii_hex
if %number%==2 goto hex_ascii
if %number%==3 exit
echo 请输入序号:(1-3):
pause
goto menu

:ascii_hex
python asciiToHex.py
pause
goto :menu

:hex_ascii
python hexToAscii.py
pause
goto menu

由于使用的是相对路径,所以需要把它们放在同一个文件夹下,同时还要确保python可以在cmd里运行(配置python环境变量)。
在这里插入图片描述
最后的效果
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐