Python3 字符串、數字、二進制互相轉換
.0.1. 2019-01-29 11:10:26 6714 收藏 6
分類專欄: python
版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/PanDD_0_1/article/details/86687140
收起
數字
整數 -1 0 1
浮點 -0.1 0.0 1.0
二進制 0b11 結果 3
八進制 0o77 結果 63
16進制 0xFF 結果 255
字符串 <class 'str'>
純字符串 'str' "str" '''str''' """str"""
字符串數字(二進制 0b) '0b0' 轉成字符 str(0b10) 結果 '2' ## 可以前置補零str(0b00000010)
字符串數字(八進制 0o) '0o0' 轉換字符 str(0o77) 結果 '63' ## 可以前置補零str(0o0077)
字符串數字(十進制) '0' 轉換字符 str(100) 結果 '100' ## 不能前置補零
字符串數字(16進制 0x) '0x0' 轉換字符 str(0xFF) 結果 '255' ## 可以前置補零str(0x00FF)
二進制 <class 'bytes'>
二進制字節表示 b'' # ASCII 字符 0-9 a-z A-Z 等
================================================================================================================================
## 數字 轉 字符串 ## 255(10進制) 0b11(2進制) 0xFF(16進制)
## (10進制數)
>>> bin(255) '0b11111111'
>>> oct(255) '0o377'
>>> hex(255) '0xff'
## (2進制數)
>>> bin(0b11) '0b11'
>>> hex(0xFF) '0xff'
## (16進制數)
>>> bin(0xFF) '0b11111111'
>>> hex(0xFF) '0xff'
================================================================================================================================
## 字符串 轉 數字(十進制數)## '123'(以10進制解析) '10'(以2進制解析) 'a'(以16進制解析)
## (10進製表示的字符串)
>>> int('123') 123 ## 十進制字符轉十進制數字
>>> int('123',10) 123 ## 默認是十進制
## (二進制表示的字符串)
>>> int('100',2) 4 ## 二進制的 100 等於 十進制的 4(可以不加前置 0b)
>>> int('0b100',2) 4 ## 二進制的 100 等於 十進制的 4
>>> int('0b0100',2) 4 ## 可以前置補零
## (16進製表示的字符串)
>>> int('a',16) 10 ## 16進制的 a 等於 十進制的 10(可以不加前置 0x)
>>> int('0xa',16) 10 ## 16進制的 a 等於 十進制的 10
>>> int('0x0a',16) 10 ## 16進制的 a 等於 十進制的 10(可以前置補零)
>>> int('10',16) 16 ## 16進制的10 等於 十進制的 16(可以不加前置 0x)
>>> int('0x10',16) 16 ## 16進制的10 等於 十進制的 16
>>> int('0x0010',16) 16 ## 16進制的10 等於 十進制的 16(可以前置補零)
================================================================================================================================
## 數字 轉 數字 ## 0b11 0xFF
## 十進制 轉 十進制
>>> int(255) 255 # 無意義操作
>>> 255 255 # 無意義操作
## 二進制 轉 十進制
>>> int(0b11) 3 # 可加前置零 int(0b0011)
>>> 0b11111111 255 # 等價
## 16進制 轉 十進制
>>> int(0xFF) 255
>>> 0xff 255 # 等價 且 忽略大小寫
>>> 0xFF 255 # 等價 且 忽略大小寫
## 十進制 轉 二進制(使用 數字 轉 字節碼/字符)
255 等價 0b11111111
## 十進制 轉 16進制(使用 數字 轉 字節碼/字符)
255 等價 0xff
================================================================================================================================
## 字符串 轉 字節碼 ##
>>> bytes('abc','utf-8') b'abc'
>>> bytes('編程','utf-8') b'\xe7\xbc\x96\xe7\xa8\x8b'
>>> bytes('Python3編程','utf-8') b'Python3\xe7\xbc\x96\xe7\xa8\x8b'
>>> 'Python3編程'.encode('UTF-8') b'Python3\xe7\xbc\x96\xe7\xa8\x8b'
>>> S = 'Python3編程' 'Python3編程'
>>> B = bytes(S,'utf-8') b'Python3\xe7\xbc\x96\xe7\xa8\x8b'
>>> FMT = str(len(B)) + 's' '13s'
>>> struct.pack(FMT,B) b'Python3\xe7\xbc\x96\xe7\xa8\x8b'
## 以16進制數字寫的字符串,直接轉成一樣的字節碼(2個16進制字符纔是一個字節)
>>> bytes.fromhex('01') b'\x01' # 單字節
>>> bytes.fromhex('0001') b'\x00\x01' # 雙字節
>>> bytes.fromhex('aabbccddeeff') b'\xaa\xbb\xcc\xdd\xee\xff' # 多字節
================================================================================================================================
## 字節碼 轉 字符串 ## 取出16進製表示的內容
>>> b'abc'.decode('UTF-8') 'abc'
>>> b'Python3\xe7\xbc\x96\xe7\xa8\x8b'.decode('UTF-8') 'Python3編程'
>>> b'\xaa\xbb\xcc\xdd\xee\xff'.hex() 'aabbccddeeff'
>>> b'0'.hex() '30' ## 字符0在ASCII碼上的數字(數字是16進製表示)== 48(十進制)
>>> b'1'.hex() '31'
>>> b'z'.hex() '7a'
================================================================================================================================
## 數字 轉 字節碼(是二進制,用16進制顯示) ##
# 10進制數 轉 字節碼
import struct
>>> struct.pack('B',0) b'\x00'
>>> struct.pack('B',1) b'\x01'
>>> struct.pack('B',101) b'e' ## 101 對應 16進制的 0x65(此處返回值是顯示爲當前整數 101 對應的 ASCII字符 e)
>>> struct.pack('B',255) b'\xff' # 無符號最大單字符可以表示的數字
>>> struct.pack('>i',255) b'\x00\x00\x00\xff' # 4字節大端表示的數字
>>> struct.pack('<i',255) b'\xff\x00\x00\x00' # 4字節小端表示的數字
# 2進制數 轉 字節碼
import struct
>>> struct.pack('B',0b11111111) b'\xff'
>>> struct.pack('>i',0b111) b'\x00\x00\x00\x07' # 0b111 等於 7(10進制)
>>> struct.pack('>i',0b1111) b'\x00\x00\x00\x0f' # 0b1111 等於 15(10進制)
>>> struct.pack('>i',0b11111) b'\x00\x00\x00\x1f' # 0b11111 等於 31(10進制)
# 16進制數 轉 字節碼
import struct
>>> struct.pack('B',0xff) b'\xff'
>>> struct.pack('>i',0xfff) b'\x00\x00\x0f\xff'
================================================================================================================================
## 字節碼 轉 數字 ##
import struct 16進製表現 10進制等值
>>> struct.unpack('B', b'\xff') (255,) # 單字節
>>> struct.unpack('>i', b'\x00\x00\x00\xff') (255,) # 4字節,大端模式
>>> struct.unpack('<i', b'\x00\x00\x00\xff') (-16777216,) # 4字節,小端模式
## 手動 轉換
字節碼 -> 字符串
>>> B = b'\xe9'
>>> S = B.hex()
>>> S # 值 'e9'
字符串(16進制格式)-> 數字(10進制)
>>> int(S,16) # 值 233
================================================================================================================================
################################################################################################################################
################################################################################################################################
################################################################################################################################
################################################################################################################################
################################################################################################################################
################################################################################################################################
################################################################################################################################
################################################################################################################################
## ASCII 字符 和 數字
字節 b'\x05'
字符串 '\x05'
## 將一個整數 (0-1114111) 轉換爲 一個字符(整數對應的 ASCII 字符)
## ValueError: chr() arg not in range(0x110000)
>>> chr(0) '\x00'
>>> chr(1) '\x01'
>>> chr(97) 'a'
>>> chr(1114111) '\U0010ffff'
>>> len(chr(101)) 1 # 長度爲 1個字符
>>> len(chr(1114111)) 1 # 長度爲 1個字符
## 將一個 ASCII字符 轉換爲 一個整數
>>> ord('\x00') 0
>>> ord('\x01') 1
>>> ord('a') 97
>>> ord('0') 48
>>> ord('1') 49
>>> ord('A') 65
>>> ord('Z') 90
>>> ord('\U0010ffff') 1114111
################################################################################################################################
################################################################################################################################
## ASCII 字符 和 bin(字節)
from binascii import b2a_hex, a2b_hex
>>> a2b_hex('ab')
b'\xab'
>>> b2a_hex(b'ab')
b'6162'
>>> a2b_hex(b'6162')
————————————————
版權聲明:本文爲CSDN博主「.0.1.」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/PanDD_0_1/article/details/86687140