2012-09-14 41 views
2

我正在使用Twisted接收來自套接字的數據。 我的協議類從Protocol繼承。使用dataReceived接收多少個字節?

由於Python 2中沒有字節類型*,接收到的數據類型是str。 當然,len(數據)給了我字符串的長度,但是怎樣才能知道接收到的字節數量是 ?有沒有sizeof或類似的東西,允許 我知道字節數? 或者我應該考慮無論平臺是什麼,字節數將是2 * len(數據)?

由於事先

+3

你爲什麼假設'2 * len(data)'而不是'1 len *(data)'? –

+0

因爲我認爲一個字符被編碼在兩個字節。如果不是這樣的話,那對我來說是完美的 – jean

+2

2.x str/3.x字節的全部要點是它是一個字節集合。字節數總是len(數據)。使用2.x unicode/3.x str,它是一個字符集合;無論是2個字節,4個,有時是2個,有時是4個,還是其他什麼都不相關,因爲無論如何都無法直接訪問字節。 – abarnert

回答

3

在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)

4

字符串的長度是以字節爲單位的長度。

相關問題