Python:以字节为单位获取字符串的大小

时间:2015-06-06 19:23:42

标签: python

我有一个要通过网络发送的字符串。我需要检查它所代表的总字节数。

sys.getsizeof(string_name)返回额外的字节。例如,sys.getsizeof("a")返回22,而一个字符仅在python中以1个字节表示。还有其他方法可以找到这个吗?

2 个答案:

答案 0 :(得分:72)

如果你想要字符串中的字节数,这个函数应该非常稳固地为你做。

:)

你得到奇怪数字的原因是因为字符串是python中的实际对象,因此封装在字符串中是一堆其他信息。

这很有意思,因为如果你看一下我的解决方案,将字符串编码为&ut;#' utf-8',那就是'编码'关于'的方法对象(这是一个字符串)。那么,它需要存储在某个地方吗?因此,高于正常的字节数。它包括那种方法,以及其他一些方法:)。

答案 1 :(得分:1)

需要接受的答案有一个警告。

对于某些多字节编码(例如utf-16),string.encode将在开头添加字节顺序标记(BOM),这是一序列特殊字节,可通知读者使用的byte endianness。因此,您得到的长度实际上是len(BOM) + len(encoded_word)

如果您不想计算BOM字节数,则可以使用编码的小端版本(添加后缀“ -le”)或大端版本(添加后缀“ be”)

>>> len('ciao'.encode('utf-16'))
10
>>> len('ciao'.encode('utf-16-le'))
8
相关问题