2017-05-02 31 views
0

我有一個接受'data'作爲參數的函數。作爲python的新手,我不確定這是甚麼類型。Python按位定義

我注意到印刷該類型的東西時,它會

b'h' 

如果我編碼的字母h。這對我來說意義重大。有沒有辦法在Python中定義比特,比如1或0.我猜b'h'必須在十六進制中?有沒有一種方法可以讓我簡單地定義一個八位字符串

bits1 = 10100000 
+0

「數據」過於寬泛以至於毫無意義。你想*二進制*數據...? – deceze

+0

既然你說你的輸出包含一個'b'前綴,我假設這是Python 3(因爲Python 2中的'bytes == str')。如果這不正確,請將其更改爲表示正在使用Python 2。 –

回答

3

你正在混合一些不相關的東西。

首先,(在Python 3中),以b爲前綴的加引號的文字的類型爲bytes - 表示一串原始字節值。例如:

x = b'abc' 
print(type(x))  # will output `<class 'bytes'>` 

這與(Unicode)字符串str類型形成對比。

整數文字可以使用前綴0b作爲二進制表示。

y = 0b10100000 
print(y)   # Will output 160 
0

對於我所知道的'數據'不是一種類型。無論您的功能類型如何,您的功能(可能)都會接受您傳遞給它的任何內容。

現在,b'h'裝置,這不是十六進制數「其二進制序列映射到炭'h'數(INT)」,但可能使用8位(1個字節,這是int的標準尺寸的數量和char)。

'h'的ASCII碼是104(十進制),用b'\ b01101000'或hexa b'\ x68'表示。因此,下面是我認爲您正在尋找的答案:如果您想從其二進制表示中編碼一個8位整數,只需鍵入b'\b01101000'(對於104)。我會建議使用hexa,以使其更加緊湊和可讀。在十六進制中,每四個比特使符號從0到f,並且這些符號可以每四位連接起來形成一個更大的數字。所以位序列01101000寫成b'\ b0110 \ b1000'或b'\ x6 \ x8',可以寫成b'\ x68'。前面的b,在引號之前告訴python將字符串解釋爲由\ b或\ x(或\ d爲十進制)定義的基數表示的二進制序列,而不是使用轉義字符。