파이썬 3 에서 문자열을 바이트입니다 변환할지 최선의 방법은?

두 가지 방식으로 문자열으로 변환할 수 있는 것 같다 (https://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-buffer-interface) 에 대한 답을 알 수 있듯이 바이트입니다

이 중 어떤 방법이 더 이상 약간만이라도 파이썬? 아니면 그냥 a matter of 개인 기본?

b = bytes(mystring, 'utf-8')

b = mystring.encode('utf-8')
질문에 대한 의견 (9)
해결책

살펴보면 문서 "에 대한 바이트입니다 '이 점을 엿볼 수 있는' bytearray '] (있습니다 https://docs.python.org/3/library/functions.html # func bytearray):

&gt. bytearray ([소스 [, 인코딩입니다 [, 오류뿐만]]])

복귀하십시오 &gt, 새로운 array of 바이트입니다. 이 bytearray 타입 () 은 정수 x = 0, lt, e0100042.log 변경 가능 범위 내의 &amp &amp lt;; 256. 이 회사는 대부분의 일반적인 방법을 설명한 Mutable 변경 가능 시퀀스에만 e0100042.log 유형뿐만 아니라 대부분의 메서드입니다 이 바이트입니다 유형에는 http://schmidt. devlib. 바이트입니다 및 바이트입니다 어레이입니다 방법.

&gt, 옵션으로 제공되는 소스 매개변수입니다 초기화하려면 어레이입니다 사용할 수 있습니다 (multipoint relays:

또한, 이는 &gt If 문자열으로 인코딩 (또는 오류) 매개변수입니다 열거하십시오 합니다. 변환할 문자열을 bytearray () 을 사용하여 바이트입니다 . 스트라이니고데 ()

&gt 것이 될 수 있을 것이므로, 이 어레이에는 If, 크기와 bytes. 초기화되었습니다 null 인 정수

이 프로그램은 버퍼 인터페이스입니다 를 따르는 객체에는 If &gt, 읽기 전용 버퍼를 초기화하려면 바이트입니다 array. 객체에는 사용됩니다.

이 프로그램은 이트레이블 If &gt, 정수 x = 0, 비활성화해야 오버클로킹된 이트레이블 범위의 &lt <; 초기 컨텐트에서 array. 사용되고 있는 256

&gt. 인수, 크기가 0 이 created._ _without 배열입니다

그래서 '그냥' 할 수 있는 것보다 훨씬 큰 인코딩합니다 바이트입니다 문자열으로. # 39 의 파이썬 it& 것이라는 데 사용할 수 있는 모든 종류의 소스 매개변수입니다 security. 구성자를 이다.

문자열으로 some_string.encode 인코딩할 수 있다고 생각한다 ' (인코딩)' 가 있기 때문에, 자체 문서화 사용할 때보다 더 많은 파이썬 구성자를 &quot 인코딩합니다 encoding&quot 대체하십시오 구체화하십시오 및 정보기술 (it) 이 가장 시행하십시오 -;; 보다 '-' 는 동사 바이트입니다 (some_string, 인코딩) 를 사용할 때 구성자를 명시성 없다.

  • I 점검됩니다 Edit:* 파이썬 소스. 유니코드 문자열을 사용하여 드러났다 ',' 바이트입니다 지정하면 스피통 [PyUnicode_AsEncodedString] (http://hg.python.org/cpython/file/5a12416890c0/Objects/unicodeobject.c # l2328), 이는 인코딩합니다 구축 ',' 그래서 그냥 you& # 39 를 경우 일정 수준의 우회 인코딩합니다 구하겠죠 전화하시기 ',' re

또한 지켜보리니 Serdalis& # 39. 주석문입니다 unicode_string.encode (인코딩) - '는' byte_string.decode (인코딩) '와' 도 더 많은 파이썬 대칭 때문에 해당 보색으로 건 좋아요.

해설 (5)

39 에 비해 it& 간소화하는지 것으로 여겨진다.

my_str = "hello world"
my_str_as_bytes = str.encode(my_str)
type(my_str_as_bytes) # ensure it is byte representation
my_decoded_str = my_str_as_bytes.decode()
type(my_decoded_str) # ensure it is string representation
해설 (10)

하지만 이 방법은 괜찼습니다 nnt best 2 the 3rd. 첫 번째 매개 변수를 ['인코딩합니다'] (https://docs.python.org/3/library/stdtypes.html) 를 # 39, & # 39 utf-8& 설정값으로 # 스트라이니고데) ',' 이후로 파이썬 3.0. 따라서 가장 좋은 방법은

b = mystring.encode()

이렇게 하면 더 빠를 수도 있기 때문에 문자열 인수를 결과, ',' 를 utf-8&quot &quot 기본값입니다 않는 C 코드를 확인할 수 있지만, 이는 'NULL' 훨씬 더 빨리!

여기에 다소 타이밍:

In [1]: %timeit -r 10 'abc'.encode('utf-8')
The slowest run took 38.07 times longer than the fastest. 
This could mean that an intermediate result is being cached.
10000000 loops, best of 10: 183 ns per loop

In [2]: %timeit -r 10 'abc'.encode()
The slowest run took 27.34 times longer than the fastest. 
This could mean that an intermediate result is being cached.
10000000 loops, best of 10: 137 ns per loop

그 후 불구하고 더 안정감이 런입니다 편차를 그냥 ~ ~ 경고 같은 기간보다 2%.

인코딩합니다 있지 않고 인수를 통해 ' ()' 과 같이 문자 인코딩은 ASCII 호환 파이썬 2 기본값입니다 파이썬 2 .

>>> 'äöä'.encode()
Traceback (most recent call last):
  File "", line 1, in 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
해설 (2)