我有一个要通过网络发送的字符串.我需要检查它所代表的总字节数.
sys.getsizeof(string_name)
返回额外的字节.例如,对于sys.getsizeof("a")
返回22,而一个字符仅在python中以1个字节表示.还有其他方法可以找到这个吗?
Kri*_*ris 85
如果你想要一个字符串中的字节数,这个函数应该非常稳固地为你做.
def utf8len(s):
return len(s.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
你得到奇怪数字的原因是因为字符串是python中的实际对象,因此封装在字符串中是一堆其他信息.
它很有趣,因为如果你看看我的解决方案将字符串编码为'utf-8','s'对象上有一个'encode'方法(这是一个字符串).那么,它需要存储在某个地方吗?因此,高于正常的字节数.它包括那个方法,以及其他一些:).
需要接受的答案有一个警告。
对于某些多字节编码(例如utf-16),string.encode
将在开头添加字节顺序标记(BOM),这是一个特殊字节序列,可告知读者所使用的字节字节序。因此,您得到的长度实际上是len(BOM) + len(encoded_word)
。
如果您不想计算BOM字节,则可以使用编码的小端版本(添加后缀“ -le”)或大端版本(添加后缀“ be”)。
>>> len('ciao'.encode('utf-16'))
10
>>> len('ciao'.encode('utf-16-le'))
8
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52896 次 |
最近记录: |