Python 十六进制数与ascii码的转换
有時(shí)候我們可能會(huì)需要做十六進(jìn)制數(shù)與ascii碼的轉(zhuǎn)換,但是上網(wǎng)搜索轉(zhuǎn)換器需要耗費(fèi)一定時(shí)間,有時(shí)候還不一定能滿足自己的需要
例如,如何將'6a 6b 6c 6d'轉(zhuǎn)換為相應(yīng)的ascii碼字符?可能我們可以去查ascii碼表,但是一來(lái),查找耗時(shí)間,第二呢,如果我們需要同時(shí)查找多個(gè)十六進(jìn)制的對(duì)應(yīng)的ascii碼值,總不能一個(gè)個(gè)查吧。
所以,我們可以自己寫(xiě)一個(gè)簡(jiǎn)單的代碼,實(shí)現(xiàn)多十六進(jìn)制數(shù)與ascii的轉(zhuǎn)換。
1、十六進(jìn)制轉(zhuǎn)換為ascii
def main():try: #為確保健壯性,需要對(duì)異常進(jìn)行處理def hexToAscii(hN):n=map(lambda x:chr(int(x,16)),hN.split(' '))for i in n:print(i,end="") #對(duì)映射進(jìn)行遍歷n = input('輸入十六進(jìn)制數(shù),以空格為分隔符:')hexToAscii(n)print()except: #不正常的輸入的情況下,會(huì)提示你重新輸入,并再次執(zhí)行主函數(shù)print("請(qǐng)輸入正確的數(shù)!")main() main()lambda函數(shù)是匿名函數(shù),可以對(duì)輸入的值進(jìn)行處理
split()將輸入的字符串進(jìn)行分割,以’ '為分隔符,將字符串分割為數(shù)組
map函數(shù)有兩個(gè)參數(shù),可以對(duì)指定的序列做出映射,簡(jiǎn)單來(lái)說(shuō),就是可以對(duì)序列進(jìn)行處理,然后返回一個(gè)map對(duì)象
int(x,16)將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
chr()實(shí)現(xiàn)的功能就是將十進(jìn)制數(shù)轉(zhuǎn)換為ascii碼
合起來(lái)就是map(lambda x:chr(int(x,16),hN.split(’ '))
例如,通過(guò)以下代碼,返回序列中每一個(gè)值與2的乘積
十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
字符串分割
最后實(shí)現(xiàn)這樣的效果
2、ascii轉(zhuǎn)十六進(jìn)制
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("請(qǐng)輸入正確的數(shù)!")main() main()map()也可以對(duì)字符串做出映射
hex(ord(x))將ord(x)得到的int類(lèi)型的十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制
string.strip(‘0x’)對(duì)得到的字符串進(jìn)行處理,去除’0x’
最后的效果:
3、批處理文件
@echo off chcp 65001 title ASCII碼轉(zhuǎn)換 color f2:menu echo ++++選項(xiàng)++++ echo 1 ascii to hex echo 2 hex to ascii echo 3 exit set /p number=輸入序號(hào): if %number%==1 goto ascii_hex if %number%==2 goto hex_ascii if %number%==3 exit echo 請(qǐng)輸入序號(hào):(1-3): pause goto menu:ascii_hex python asciiToHex.py pause goto :menu:hex_ascii python hexToAscii.py pause goto menu由于使用的是相對(duì)路徑,所以需要把它們放在同一個(gè)文件夾下,同時(shí)還要確保python可以在cmd里運(yùn)行(配置python環(huán)境變量)。
最后的效果
總結(jié)
以上是生活随笔為你收集整理的Python 十六进制数与ascii码的转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab图像输出表格_matlab
- 下一篇: dellt服务器r修复,RE: 求助