【问题标题】:How many bytes are received with dataReceived?dataReceived 接收了多少字节?
【发布时间】:2012-09-15 18:37:13
【问题描述】:

我正在使用 Twisted 从套接字接收数据。 我的协议类继承自 Protocol。

由于 Python 2.* 中没有字节类型,因此接收数据的类型为 str。 当然, len (data) 给了我字符串的长度,但我怎么知道 收到的字节数?没有 sizeof 或类似的东西允许 我知道字节数吗? 还是我应该考虑无论平台如何,字节数都是 2 * len (data) ?

提前致谢

【问题讨论】:

  • 你为什么假设2*len(data)而不是1*len(data)
  • 因为我认为一个 char 被编码为两个字节。如果不是这样,它对我来说是完美的
  • 2.x str/3.x 字节的全部意义在于它是字节的集合。字节数始终为 len(data)。使用 2.x unicode/3.x str,它是字符的集合;这些是 2 个字节、4 个、有时 2-有时 4 还是其他什么都无关紧要,因为无论如何都无法直接访问这些字节。
  • PS,2.x(更高版本)中有字节类型;它只是 str 的同义词,但它存在,并且与 3.x 中的字节几乎相同。

标签: python twisted


【解决方案1】:

字符串的长度是以字节为单位的长度。

【讨论】:

    【解决方案2】:

    在 Python 2 中,

    • str → 字节序列,有时用作 ASCII 文本
    • bytesstr 的别名(在 python 2.6 及更高版本中可用)
    • unicode → 一系列 unicode 代码单元(UCS-2 或 UCS-4,取决于编译时选项,默认为 UCS-2)

    在 Python 3 中,

    • str → 一系列 unicode 代码单元 (UCS-4)
    • bytes → 字节序列
    • unicode → 没有这种事了,你的意思是str

    认为传递给dataReceived 的类型为bytes。在 Python 2.x 中为bytes,当 Twisted 移植到 Python 3.x 时为bytes

    因此,接收到的段的字节长度只是len(data)

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多