programing

Python : 문자열 크기(바이트)를 가져옵니다.

javamemo 2023. 10. 12. 21:28
반응형

Python : 문자열 크기(바이트)를 가져옵니다.

네트워크를 통해 보낼 문자열이 있습니다.나는 그것이 표현된 바이트의 총합을 확인해야 합니다.

sys.getsizeof(string_name)추가 바이트를 반환합니다.예를 들어 다음의 경우sys.getsizeof("a")python에서는 하나의 문자가 1바이트로만 표현되는 반면, 22를 반환합니다.이것을 찾을 다른 방법이 있습니까?

문자열의 바이트 수를 원한다면 이 함수를 사용하면 상당히 안정적으로 처리할 수 있습니다.

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

당신이 이상한 숫자를 얻은 이유는 문자열에 캡슐화된 정보가 많은 이유는 문자열이 파이썬의 실제 객체이기 때문입니다.

문자열을 'utf-8'로 인코딩하는 제 솔루션을 보면 's' 개체(문자열)에 'encode' 메서드가 있기 때문에 흥미롭습니다.어디에 보관해야 하는 거죠?따라서 일반 바이트 수보다 높은 값입니다.그 방법과 다른 몇 가지 방법이 포함되어 있습니다 :).

인정된 대답에 주의할 점이 있습니다.

일부 멀티바이트 인코딩(예: utf-16)의 경우,string.encode는 시작할 때 BOM(Byte Order Mark)을 추가합니다. 이는 독자에게 사용된 바이트 엔디안을 알려주는 특수 바이트 시퀀스입니다.그래서 여러분이 받는 길이는 사실.len(BOM) + len(encoded_word).

BOM 바이트를 세지 않으려면 little endian 버전의 인코딩(-le" 접미사 추가) 또는 big endian 버전(be" 접미사 추가)을 사용할 수 있습니다.

>>> len('ciao'.encode('utf-16'))
10
>>> len('ciao'.encode('utf-16-le'))
8

언급URL : https://stackoverflow.com/questions/30686701/python-get-size-of-string-in-bytes

반응형