本文目錄一覽:
- 1、python123漢字的unicode編碼值
- 2、遇到binascii.Error: Incorrect padding 怎麼辦? python
- 3、python將十六進制轉為十進制數字的程序怎麼寫
- 4、python中怎麼將一個二進制變成字符
- 5、如何用python寫個串口通信的程序
python123漢字的unicode編碼值
python的默認編碼是ascii,可以通過sys.setdefaultencoding(‘utf-8’)函數設置python的默認編碼。
python中可以通過encode和decode的方式改變數據的編碼,比如:
u’漢字’
u’\u6c49\u5b57′
u’漢字’.encode(‘utf-8’)
‘\xe6\xb1\x89\xe5\xad\x97’
u’漢字’.encode(‘utf-8’).decode(‘utf-8’)
u’\u6c49\u5b57′
我們可以通過這兩個函數設置編碼。
那麼,python中的str是什麼類型?
import binascii
‘漢字’
‘\xba\xba\xd7\xd6’
type(‘漢字’)
print binascii.b2a_hex(‘漢字’)
babad7d6
print binascii.b2a_hex(u’漢字’)
Traceback (most recent call last):
File “”, line 1, in
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in
position 0-1: ordinal not in range(128)
print binascii.b2a_hex(u’漢字’.encode(‘utf-8’))
e6b189e5ad97
print binascii.b2a_hex(u’漢字’.encode(‘gbk’))
babad7d6
binascii是將數據的二進制轉換成ascii,上面的解釋是:‘漢字’的類型是str,二進制是babad7d6,u‘漢字’是無法轉換成ascii,這樣就報出了開頭的第一個錯誤。解決辦法就是把它.encode(‘utf-8′)成str類型。因為我命令行是windows默認的GBK編碼,所有u’漢字’.encode(‘gbk’)的時候,輸出結果和‘漢字’結果一樣。
遇到binascii.Error: Incorrect padding 怎麼辦? python
s不符合base64的padding規則。“當原數據長度不是3的整數倍時, 如果最後剩下兩個輸入數據,在編碼結果後加1個“=”;如果最後剩下一個輸入數據,編碼結果後加2個“=”;如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。”(引自維基base64中文條目)
當然,這可能是由於s數據不完整或有其他字符串混入導致的。
wiki:
python將十六進制轉為十進制數字的程序怎麼寫
把十六進制的字串轉為十進制數字:
Python代碼
print int(‘ff’, 16)
255
print int(‘ff’, 16)
255
把十進制數字轉換為以十六進制表示之字串,可調用內置的hex()函數:
Python代碼
print hex(255)
0xff
print hex(255)
0xff
調用BinAscii模塊其中的b2a_hex()函數,可把以ASCII編碼的文字以十六進制表示:
Python代碼
print binascii.b2a_hex(‘A’)
41
print binascii.b2a_hex(‘A’)
41
反之也可把以十六進制表示的文字,換成以ASCII編碼的文字:
Python代碼
print binascii.a2b_hex(’41’)
“A”
python中怎麼將一個二進制變成字符
用binascii模塊:
import binascii
binascii.a2b_hex(‘abcd’)
‘\xab\xcd’
binascii.a2b_hex(“a16203”)
‘\xa1b\x03’
binascii.b2a_hex(‘\xa1b\x03’)
‘a16203’
如何用python寫個串口通信的程序
使用 pyserial 就可以處理串口通信,這個包是跨平台的。
示例程序在這裡:
import serial
# 創建serial實例
serialport = serial.Serial()
serialport.port = ‘COM1’
serialport.baudrate = 9600
serialport.parity = ‘N’
serialport.bytesize = 8
serialport.stopbits = 1
serialport.timeout = 0.6
try:
serialport.open()
serialport.setDTR(True)
serialport.setRTS(True)
except Exception, ex:
print ex
# 發送數據
serialport.write(raw_data)
# 根據項目要求,可以開一個線程掃描接收數據
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/308360.html