Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
在使用Pyserial與STM32進(jìn)行通訊時(shí),遇到了需要將十六進(jìn)制整數(shù)以Ascii碼編碼的字符串進(jìn)行發(fā)送并且將接收到的Ascii碼編碼的字符串轉(zhuǎn)換成十六進(jìn)制整型的問題。查閱網(wǎng)上的資料后,均沒有符合要求的,遂結(jié)合各家之長(zhǎng),用了以下方法。
環(huán)境
Python2.7 + Binascii模塊
十六進(jìn)制整數(shù)轉(zhuǎn)ASCii編碼字符串
# -*- coding: utf-8 -*- import binascii #16進(jìn)制整數(shù)轉(zhuǎn)ASCii編碼字符串 a = 0x665554 b = hex(a) #轉(zhuǎn)換成相同的字符串即'0x665554' b = b[2:] #截取掉'0x' c = binascii.a2b_hex(b) #轉(zhuǎn)換成ASCii編碼的字符串 print("a:%x, b:%s,c:%s" %(a,b,c)) print type(a) print type(b) print type(c)
測(cè)試結(jié)果:
a:665554, b:665554,c:fUT <type 'int'> <type 'str'> <type 'str'>
ASCii編碼字符串轉(zhuǎn)十六進(jìn)制整數(shù)
# -*- coding: utf-8 -*- import binascii c = 'fUT' e = 0 #暫存結(jié)果 for i in c: d = ord(i) #單個(gè)字符轉(zhuǎn)換成ASCii碼 e = e*256 + d #將單個(gè)字符轉(zhuǎn)換成的ASCii碼相連 print("e:%x" %e) print type(e)
測(cè)試結(jié)果:
e:665554 <type 'int'>
可以看到,以上兩段小程序順利實(shí)現(xiàn)了這個(gè)設(shè)計(jì)要求
以上這篇Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于OpenCV的攝像頭測(cè)距的實(shí)現(xiàn)示例
本文主要介紹了基于OpenCV的攝像頭測(cè)距的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01python中import reload __import__的區(qū)別詳解
這篇文章主要介紹了python中import reload __import__的區(qū)別詳解,需要的朋友可以參考下2017-10-10python使用Thread的setDaemon啟動(dòng)后臺(tái)線程教程
這篇文章主要介紹了python使用Thread的setDaemon啟動(dòng)后臺(tái)線程教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python制作簡(jiǎn)易注冊(cè)登錄系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python簡(jiǎn)易注冊(cè)登錄系統(tǒng)的制作方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Python實(shí)現(xiàn)的圓形繪制(畫圓)示例
這篇文章主要介紹了Python實(shí)現(xiàn)的圓形繪制(畫圓),結(jié)合實(shí)例形式分析了Python基于numpy與matplotlib模塊的數(shù)學(xué)運(yùn)算及圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01python的input,print,eval函數(shù)概述
這篇文章主要為大家概述了python的input,print,eval函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01用Python做個(gè)自動(dòng)化彈鋼琴腳本實(shí)現(xiàn)天空之城彈奏
突然靈機(jī)一動(dòng),能不能用Python自動(dòng)化腳本彈奏一曲美妙的鋼琴曲呢?今天就一起帶大家如何用Python實(shí)現(xiàn)自動(dòng)化彈出一首《天空之城》有需要的朋友可以借鑒參考下2021-09-09