Python: получить размер строки в байтах

У меня есть строка, которая должна быть отправлена по сети. Мне нужно проверить общие байты, в которых они представлены.

sys.getsizeof(string_name) возвращает дополнительные байты. Например, для sys.getsizeof("a") возвращается 22, а один символ представлен только в 1 байт в python. Есть ли другой способ найти это?

Ответы

Ответ 1

Если вы хотите количество байтов в строке, эта функция должна сделать это для вас довольно солидно.

def utf8len(s):
    return len(s.encode('utf-8'))

Причина, по которой вы получили странные числа, состоит в том, что инкапсулированные в строку - это куча другой информации из-за того, что строки являются реальными объектами в python.

Это интересно, потому что если вы посмотрите на мое решение для кодирования строки в "utf-8", там есть метод "encode" для объекта "s" (который является строкой). Ну, его нужно где-то хранить? Следовательно, счетчик больше, чем обычный байт. В том числе этот метод, а также несколько других :).