Python 十六进制数与ascii码的转换
有時候我們可能會需要做十六進制數(shù)與ascii碼的轉(zhuǎn)換,但是上網(wǎng)搜索轉(zhuǎn)換器需要耗費一定時間,有時候還不一定能滿足自己的需要
例如,如何將'6a 6b 6c 6d'轉(zhuǎn)換為相應(yīng)的ascii碼字符?可能我們可以去查ascii碼表,但是一來,查找耗時間,第二呢,如果我們需要同時查找多個十六進制的對應(yīng)的ascii碼值,總不能一個個查吧。
所以,我們可以自己寫一個簡單的代碼,實現(xiàn)多十六進制數(shù)與ascii的轉(zhuǎn)換。
1、十六進制轉(zhuǎn)換為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('輸入十六進制數(shù),以空格為分隔符:')hexToAscii(n)print()except: #不正常的輸入的情況下,會提示你重新輸入,并再次執(zhí)行主函數(shù)print("請輸入正確的數(shù)!")main() main()lambda函數(shù)是匿名函數(shù),可以對輸入的值進行處理
split()將輸入的字符串進行分割,以’ '為分隔符,將字符串分割為數(shù)組
map函數(shù)有兩個參數(shù),可以對指定的序列做出映射,簡單來說,就是可以對序列進行處理,然后返回一個map對象
int(x,16)將十六進制數(shù)轉(zhuǎn)換為十進制數(shù)
chr()實現(xiàn)的功能就是將十進制數(shù)轉(zhuǎn)換為ascii碼
合起來就是map(lambda x:chr(int(x,16),hN.split(’ '))
例如,通過以下代碼,返回序列中每一個值與2的乘積
十六進制轉(zhuǎn)換為十進制
字符串分割
最后實現(xiàn)這樣的效果
2、ascii轉(zhuǎ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("請輸入正確的數(shù)!")main() main()map()也可以對字符串做出映射
hex(ord(x))將ord(x)得到的int類型的十進制數(shù)轉(zhuǎn)換為十六進制
string.strip(‘0x’)對得到的字符串進行處理,去除’0x’
最后的效果:
3、批處理文件
@echo off chcp 65001 title ASCII碼轉(zhuǎn)換 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環(huán)境變量)。
最后的效果
總結(jié)
以上是生活随笔為你收集整理的Python 十六进制数与ascii码的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab图像输出表格_matlab
- 下一篇: python读取多个sheet文件_Py