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
'programing' 카테고리의 다른 글
문자열에 공백뿐만 아니라 문자와 공백이 포함되어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.10.12 |
---|---|
도커 오라클 인스턴스에 연결하는 방법 (0) | 2023.10.12 |
최소 및 최대 날짜 (0) | 2023.10.12 |
글리폰을 크게 하려면 어떻게 해야 할까요?(크기 변경?) (0) | 2023.10.12 |
스프링 3.0 MVC 바인딩 Enums 대소문자 구분 (0) | 2023.10.12 |