成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

瀏覽:144日期:2022-06-24 09:28:01

問題描述

最近做一個(gè)項(xiàng)目,是用Python進(jìn)行相關(guān)的串口操作。及將相關(guān)指令通過串口發(fā)給設(shè)備,設(shè)備根據(jù)發(fā)過來(lái)的指令來(lái)做出相應(yīng)的操作,所用的庫(kù)是Pyserial。在最初開發(fā)時(shí),出現(xiàn)的問題在于:別人給的文檔里面的命令是十六進(jìn)制的。例如,給出一個(gè)指令:

5aa5 07 82 1000 3132 3334 。 那么,我們需要思考的是,我們?nèi)绾螌⑸厦娴闹噶睿D(zhuǎn)換為pyserial庫(kù)進(jìn)行寫操作時(shí)(write)所需要的bytes類型。

解決方法

首先,我們需要知道的是,我們首先,需要用字符串構(gòu)造成上面的指令,然后我們將它轉(zhuǎn)換成bytes。我們可以使用encode()函數(shù)將字符串轉(zhuǎn)為bytes格式:

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

然后我們就可以使用write對(duì)串口進(jìn)行發(fā)數(shù)據(jù)了:

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

這里需要說明的是,我們發(fā)送的是字符串的1234,串口那邊就根據(jù)ascii進(jìn)行解析。所以就變成了 31 32 33 34。

接下來(lái),再來(lái)更換一個(gè)場(chǎng)景,我們構(gòu)造好了一個(gè)十六進(jìn)制的bytes,需要將它還原成字符串:

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

解析串口發(fā)過來(lái)的數(shù)據(jù),首先我們查看從串口發(fā)過來(lái)的數(shù)據(jù)格式:

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

可以看到,我們發(fā)送的指令,和收到的指令,看起來(lái)不一致,那么我們也就無(wú)法進(jìn)行調(diào)試,也就無(wú)法查看發(fā)過來(lái)的指令是否有錯(cuò)誤,所以,我們需要對(duì)接收到的指令進(jìn)行轉(zhuǎn)換。

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

可以看到,我們通過binascii中的函數(shù),對(duì)發(fā)送過來(lái)的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成了我們能夠看看懂的命令字符串。

接下來(lái),我們?nèi)绾螌⑹盏降拿?,轉(zhuǎn)換為文字?例如,我們收到了一串bytes,如果將它轉(zhuǎn)換為明文?

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

如上圖,我們將收到的bytes已經(jīng)轉(zhuǎn)換成了字符串格式,然后將里面的31 32 33 34提取出來(lái),然后,我們將它們放入一個(gè)數(shù)組,經(jīng)過上面的運(yùn)算以后,我們就得到了明文數(shù)據(jù)。

如何將十六進(jìn)制轉(zhuǎn)換為字節(jié)流?

Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)

上述兩個(gè)方法均可。

總結(jié)

由于對(duì)上述的知識(shí)點(diǎn)不是特別熟悉,所以表述可能有一定的混亂。當(dāng)初想實(shí)現(xiàn)上述幾點(diǎn)功能時(shí)也費(fèi)了很大的勁,所以才寫在這里供以后后續(xù)使用。后來(lái)者進(jìn)行學(xué)習(xí)時(shí),無(wú)需仔細(xì)看文字,只需要看圖片,了解前后數(shù)據(jù)類型的轉(zhuǎn)化成什么樣,是否符合自己的需求即可。

補(bǔ)充知識(shí):python中字符之間的轉(zhuǎn)換函數(shù)

int(x [,base ]) 將x轉(zhuǎn)換為一個(gè)整數(shù)

long(x [,base ]) 將x轉(zhuǎn)換為一個(gè)長(zhǎng)整數(shù)

base默認(rèn)參數(shù)值為10,也就是說把字符串’x’視為十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)

print int(’12345’,8) # 5349

float(x ) 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù) complex(real [,imag ]) 創(chuàng)建一個(gè)復(fù)數(shù) str(x ) 將對(duì)象 x 轉(zhuǎn)換為字符串 repr(x ) 將對(duì)象 x 轉(zhuǎn)換為表達(dá)式字符串 eval(str ) 用來(lái)計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象 tuple(s ) 將序列 s 轉(zhuǎn)換為一個(gè)元組 list(s ) 將序列 s 轉(zhuǎn)換為一個(gè)列表 chr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符 unichr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符 ord(x ) 將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值 hex(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串 oct(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串

以上這篇Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 黄色成人在线观看 | 久久精品视频3 | 99精品在线看 | 欧美国产精品亚洲精品第一区 | 亚洲夜色夜色综合网站 | 日日摸夜夜搂人人要 | 精品国产91久久久久久久a | 美女黄影院| 99国产精品免费视频观看 | www.日本高清.com | 中文字幕精品视频在线 | 亚洲精品高清视频 | 欧美一级日本一级韩国一级 | 免费观看一级特黄三大片视频 | 一区二区三区精品国产欧美 | 欧美在线亚洲国产免m观看 欧美在线一级精品 | 最新怡红院全部视频在线 | 色拍拍在精品视频69影院在线 | 久久精品视频免费在线观看 | 精品厕拍| 有码视频在线观看 | 日本高清在线精品一区二区三区 | 国产精品久久久久久久y | 99re热精品这里精品 | 亚洲一级高清在线中文字幕 | 欧美大片欧美毛片大片 | 亚洲人成网址在线观看 | 亚洲综合第一区 | 欧美三级一级 | 国产成人一区二区三区在线视频 | 国产一级网站 | 日鲁夜鲁鲁狠狠综合视频 | 日韩在线高清视频 | 亚洲男人的天堂久久香蕉网 | 天堂一区二区在线观看 | 欧美a在线播放 | jul-179在线中文字幕 | 亚洲人成网址在线播放a | 午夜刺激爽爽视频免费观看 | 欧美视频在线观在线看 | 玖玖精品视频在线 |