Подтвердить что ты не робот

Сколько байтов имеет строка

Есть ли какая-то функция, которая скажет мне, сколько байтов занимает строка в памяти?

Мне нужно установить размер буфера сокета, чтобы сразу передать всю строку.

4b9b3361

Ответ 1

import sys
sys.getsizeof(s)

# getsizeof(object, default) -> int
# Return the size of object in bytes.

Но на самом деле вам нужно знать его представленную длину, поэтому что-то вроде len(s) должно быть достаточно.

Ответ 2

Если это Python 2.x str, получите его len. Если это Python 3.x str (или Python 2.x unicode), сначала кодируйте на bytes (или a str, соответственно), используя предпочтительную кодировку ('utf-8' - хороший выбор) а затем получить len закодированного объекта bytes/str.


Например, символы ASCII используют по 1 байт каждый:

>>> len("hello".encode("utf8"))
5

тогда как китайцы используют по 3 байта каждый:

>>> len("你好".encode("utf8"))
6