魔豹聯盟Meta系統開發方案丨佛薩奇2.0系統開發技術講解
去中心化應用成功的關鍵在於開發者可以有效控制去中心化資料的輸入和輸出。目前能夠實現這一點的方法並不多,不過至少我知道的目前有兩個新專案現正在研究其他的方法論。
1 Python3的資料編碼
Python3統一了編碼方式,字串就是str,位元組串就是bytes。字串str其實就是文字,統一使用Unicode編碼。而位元組串bytes就是原始的位元組,本質是二進位制數值。它們兩者之間可以互相轉化。
1.1字串
字串舉例:
>>>s='字串abc'
>>>s
'字串abc'
>>>type(s)
<class'str'>
如上例,字串使用引號表示。Python3統一使用Unicode編碼,所以可以正常顯示多種語言文字。
1.2位元組串
位元組串舉例:
>>>b=b'xe5xadx97xe7xacxa6xe4xb8xb2abc'
>>>b
b'xe5xadx97xe7xacxa6xe4xb8xb2abc'
>>>type(b)
<class'bytes'>
如上例,一個位元組串是以b開頭,每個位元組使用十六進位制數值表示的串。因為位元組串是儲存於計算機中的最原始的資料,本質上二進位制數值,但是為了提高閱讀效率,一般使用十六進位制表示。每個位元組以x開頭,表示這是一個原始的二進位制值。但是,在上例中,最後三個位元組卻沒有以x開頭,顯示的是字母abc。這就牽扯到Python的顯示規則了,如果該十六進位制值表示的是能夠列印的ASCII碼值,那麼就直接列印出來,不使用十六進位制表示。實際上,如果將末尾字母abc使用以x開頭的十六進位制表示,其本質也是相等的。
>>>a=b'xe5xadx97xe7xacxa6xe4xb8xb2abc'
>>>b=b'xe5xadx97xe7xacxa6xe4xb8xb2x61x62x63'
>>>a==b
True
如上例,將abc使用其對應的十六進位制0x61,0x62,0x63表示,也是與原始位元組串相等的。
2字串與位元組串的相互轉化
字串與位元組串的轉化可以使用encode()和decode()兩個函式:
字串轉化為位元組串:encode(),編碼。
位元組串轉化為字串:decode(),解碼。
encode和decode預設採用utf-8編碼。
2.1字串轉化為位元組串
>>>'字串abc'.encode()
b'xe5xadx97xe7xacxa6xe4xb8xb2abc'
2.2位元組串轉化為字串
>>>b'xe5xadx97xe7xacxa6xe4xb8xb2abc'.decode()
'字串abc'
十六進位制字串
在實際程式設計中,經常遇到十六進位制字串。
>>>s='cc4a5ce1b3'
>>>type(s)
<class'str'>
如上例,為了說明方便,本文把形如上例的字串s稱為十六進位制字串。當然,該字串的長度肯定是偶數。s本質上是一個字串,但是在實際的程式設計例項中,其表示原始資料,為了使用者友好,將原始的位元組數值轉化為使用者可以看到的十六進位制字串。
3.1十六進位制字串轉化為位元組串
在資料運算中,例如將該資料進行雜湊運算,肯定要對其原始二進位制數值進行雜湊運算。那麼就需要將該十六進位制字串轉化為原始的位元組串。
在Python3中,可以使用bytes.fromhex()、binascii.a2b_hex()、binascii.unhexlify()函式將十六進位制字串轉化為其原始二進位制數值,即以x開頭表示的每個位元組。
>>>bytes.fromhex('cc4a5ce1b3')
b'xccJ\xe1xb3'
>>>binascii.a2b_hex('cc4a5ce1b3')
b'xccJ\xe1xb3'
>>>binascii.unhexlify('cc4a5ce1b3')
b'xccJ\xe1xb3'
如上例,以上三個函式都可將十六進位制字串轉化為以b開頭的位元組串。但是,推薦使用bytes.fromhex()函式。這是因為該函式可以有效處理十六進位制字串中的空格,可以自動處理空格。
>>>bytes.fromhex('cc4a 5c e1b3')
b'xccJ\xe1xb3'
1
2
如上例所示,如果十六進位制字串中含有空格,則bytes.fromhex()函式可以正確處理。
3.2位元組串轉化為十六進位制字串
可以使用hex()函式將原始資料位元組串轉化為可以閱讀的十六進位制字串。該函式是Python3.5新加入的。
>>>b'xccJ\xe1xb3'.hex()
'cc4a5ce1b3'
>>>binascii.b2a_hex(b'xccJ\xe1xb3').decode()
'cc4a5ce1b3'
>>>binascii.hexlify(b'xccJ\xe1xb3').decode()
'cc4a5ce1b3'
如上例,可將以b開頭的位元組串轉化為十六進位制字串。雖然有三種方式可以此目標,但是還是推薦使用hex()函式更簡單快捷。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016646/viewspace-2942636/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 佛薩奇開發2.0元宇宙魔豹聯盟系統開發技術講解方案元宇宙
- Meta佛薩奇2.0開發原始碼搭建丨Meta魔豹聯盟系統開發原始碼技術開發原始碼
- Forsage佛薩奇2.0魔豹聯盟系統技術開發分析(佛薩奇2.0原始碼版)原始碼
- Meta佛薩奇矩陣模式/MetaForce/系統開發/原始碼搭建方案/魔豹聯盟開發技術講解矩陣模式原始碼
- about魔豹聯盟佛薩奇系統開發技術方案(原始碼)原始碼
- 魔豹聯盟Forsage佛薩奇2.0系統開發詳情(技術分析)
- meta魔豹聯盟2.0佛薩奇開發(Demo)案例
- 佛薩奇Forsage運營版2.0系統開發技術丨佛薩奇2.0魔豹聯盟程式碼程式設計程式設計
- Forsage/MetaForce/魔豹聯盟/Matic馬蹄鏈/佛薩奇2.0系統開發技術方案
- MetaForce/Forsage/魔豹聯盟馬蹄鏈佛薩奇2.0系統開發
- 魔豹聯盟元宇宙佛薩奇系統開發技術原始碼搭建元宇宙原始碼
- MetaForce魔豹聯盟佛薩奇2.0矩陣公排系統開發(開發方案及功能)矩陣
- Polygon馬蹄鏈Matic/Forsage/魔豹聯盟/Metaforce佛薩奇2.0系統開發案例丨技術分析Go
- 佛薩奇系統開發(原始碼部署)丨META FORCE佛薩奇2.0系統開發技術詳細版本原始碼
- 魔豹聯盟佛薩奇2.0矩陣公排系統開發方案及邏輯矩陣
- MetaForce/Forsage/魔豹聯盟/Matic馬蹄鏈/佛薩奇2.0系統開發案例詳細丨成熟技術
- 佛薩奇原始碼丨Force佛薩奇2.0系統合約開發講解丨Python技術原始碼Python
- 佛薩奇2.0系統丨佛薩奇2.0系統開發(功能版)丨佛薩奇2.0開發原始碼案例部署原始碼
- 魔豹聯盟佛薩奇2.0開發邏輯demo
- 闡述MetaForce原力元宇宙佛薩奇系統開發丨魔豹聯盟原始碼解析方案技術元宇宙原始碼
- 魔豹聯盟2.0Metaforce佛薩奇模式系統開發搭建(Solidity環境)詳解模式Solid
- MetaForce佛薩奇2.0系統丨MetaForce佛薩奇2.0系統開發(方案及詳細)
- Forsage/魔豹聯盟/Matic馬蹄鏈/佛薩奇2.0系統開發(詳細及規則玩法)丨成熟技術
- Forsage/魔豹聯盟/MetaForce/Polygon馬蹄鏈Matic佛薩奇2.0系統開發方案設計丨原始碼案例Go原始碼
- Meta佛薩奇2.0Force系統技術開發(原理分析)
- Meta Force佛薩奇2.0系統開發的邏輯需求 | Meta Force佛薩奇2.0系統開發原始碼示例原始碼
- 魔豹聯盟/Forsage/Metaforce佛薩奇2.0原力元宇宙系統開發詳情版丨開發穩定版元宇宙
- 佛薩奇2.0開發參考版丨佛薩奇2.0系統開發(成熟及專案)丨佛薩奇2.0系統原始碼部署原始碼
- Forsage佛薩奇系統開發2.0丨馬蹄鏈2.0佛薩奇矩陣開發技術合約矩陣
- 魔豹聯盟/Forsage/MetaForce/Polygon馬蹄鏈Matic佛薩奇2.0系統開發詳細功能丨原始碼Go原始碼
- 佛薩奇2.0(合約)開發制度講解丨佛薩奇升級2.0版系統功能開發詳情
- 魔豹聯盟佛薩奇2.0矩陣公排NFT系統開發原始碼(智慧合約)矩陣原始碼
- 佛薩奇2.0互助分紅開發丨佛薩奇系統開發原始碼丨佛薩奇2.0運營版原始碼
- MetaForce佛薩奇系統2.0開發技術分析
- 佛薩奇2.0(Forsage)系統開發技術丨python技術語言Python
- 佛薩奇開發原始碼丨佛薩奇系統開發案例丨智慧合約佛薩奇開發技術程式碼原始碼
- 【DAPP】佛薩奇2.0矩陣互助開發詳情丨佛薩奇制度系統開發細節講解APP矩陣
- Metaforce/Forsage/魔豹聯盟佛薩奇2.0公排矩陣系統開發詳細邏輯丨原始碼功能矩陣原始碼