我正在使用Twisted接收來自套接字的數據。 我的協議類從Protocol繼承。使用dataReceived接收多少個字節?
由於Python 2中沒有字節類型*,接收到的數據類型是str。 當然,len(數據)給了我字符串的長度,但是怎樣才能知道接收到的字節數量是 ?有沒有sizeof或類似的東西,允許 我知道字節數? 或者我應該考慮無論平臺是什麼,字節數將是2 * len(數據)?
由於事先
我正在使用Twisted接收來自套接字的數據。 我的協議類從Protocol繼承。使用dataReceived接收多少個字節?
由於Python 2中沒有字節類型*,接收到的數據類型是str。 當然,len(數據)給了我字符串的長度,但是怎樣才能知道接收到的字節數量是 ?有沒有sizeof或類似的東西,允許 我知道字節數? 或者我應該考慮無論平臺是什麼,字節數將是2 * len(數據)?
由於事先
在Python 2,
str
→字節序列,其有時作爲ASCII文本bytes
→一個別名str
(可在python 2.6和更高)unicode
→一系列的unicode代碼單元(UCS-2或UCS-4,取決於編譯時間選項,默認爲UCS-2)In Python 3中,
str
→的Unicode代碼單元(UCS-4)bytes
→字節序列unicode
→沒有這樣的事任何更多,則意味着序列str
將傳遞給dataReceived
的類型想象爲bytes
。在Python 2.x中是bytes
,當Twisted已經移植到Python 3.x時,它將是bytes
。
因此,接收到的段的字節長度僅爲len(data)
。
字符串的長度是以字節爲單位的長度。
你爲什麼假設'2 * len(data)'而不是'1 len *(data)'? –
因爲我認爲一個字符被編碼在兩個字節。如果不是這樣的話,那對我來說是完美的 – jean
2.x str/3.x字節的全部要點是它是一個字節集合。字節數總是len(數據)。使用2.x unicode/3.x str,它是一個字符集合;無論是2個字節,4個,有時是2個,有時是4個,還是其他什麼都不相關,因爲無論如何都無法直接訪問字節。 – abarnert