Phương thức
#Using the byte[] method
# initializing string
str_1 = "Join our freelance network"
str_1_encoded = bytes[str_1,'UTF-8']
#printing the encode string
print[str_1_encoded]
#printing individual bytes
for bytes in str_1_encoded:
print[bytes, end = ' ']
8 trả về một đối tượng byte là một chuỗi số nguyên bất biến [không thể sửa đổi] trong phạm vi bytes[[source[, encoding[, errors]]]]1
Nếu bạn muốn sử dụng phiên bản có thể thay đổi, hãy sử dụng phương thức bytearray[]
byte[] Tham số
#Using the byte[] method
# initializing string
str_1 = "Join our freelance network"
str_1_encoded = bytes[str_1,'UTF-8']
#printing the encode string
print[str_1_encoded]
#printing individual bytes
for bytes in str_1_encoded:
print[bytes, end = ' ']
8 có ba tham số tùy chọn- nguồn [Tùy chọn] - nguồn để khởi tạo mảng byte
- mã hóa [Tùy chọn] - nếu nguồn là một chuỗi, mã hóa của chuỗi
- lỗi [Tùy chọn] - nếu nguồn là một chuỗi, hành động cần thực hiện khi chuyển đổi mã hóa không thành công [Đọc thêm. mã hóa chuỗi]
Tham số nguồn có thể được sử dụng để khởi tạo mảng byte theo các cách sau
TypeDescriptionStringChuyển đổi chuỗi thành byte bằng cách sử dụng str. encode[] Cũng phải cung cấp mã hóa và các lỗi tùy chọnIntegerTạo một mảng có kích thước được cung cấp, tất cả được khởi tạo thành nullObjectMột bộ đệm chỉ đọc của đối tượng sẽ được sử dụng để khởi tạo mảng byteIterableTạo một mảng có kích thước bằng với số lần lặp và được khởi tạo cho các phần tử có thể lặp lại
Trong hướng dẫn này, chúng tôi xem xét cách chuyển đổi chuỗi Python thành byte. Chúng tôi xem xét tất cả các phương pháp khác nhau cùng với những hạn chế và lưu ý của chúng
Mục lục - Chuỗi Python thành Byte
- Chuỗi Python thành byte
- Phương pháp chuyển đổi chuỗi thành byte
- Sử dụng byte[]
- Sử dụng mã hóa[]
- Hạn chế và hãy cẩn thận - Chuỗi Python thành Byte
Chuỗi Python thành byte
Chuyển đổi chuỗi Python thành Byte đã trở nên khá phổ biến sau khi phát hành Python 3. Điều này phần lớn là do rất nhiều phương pháp xử lý tệp và Máy học yêu cầu bạn chuyển đổi chúng. Trước khi đi sâu vào cách chuyển đổi chúng, trước tiên chúng ta hãy hiểu chúng là gì và chúng khác nhau như thế nào
Trong Python 2, chuỗi và byte là cùng một đối tượng typeByte; . Về bản chất, các chuỗi có thể đọc được bằng con người và để chúng có thể đọc được bằng máy, chúng phải được chuyển đổi thành các đối tượng byte. Chuyển đổi này cũng cho phép dữ liệu được lưu trữ trực tiếp trên đĩa
Quá trình chuyển đổi đối tượng chuỗi thành đối tượng byte được gọi là mã hóa và ngược lại được gọi là giải mã. Chúng tôi xem xét các phương pháp để đạt được điều này dưới đây
Phương pháp chuyển đổi chuỗi thành byte
Có nhiều phương thức có thể được sử dụng để chuyển đổi chuỗi Python thành byte, tuy nhiên, chúng tôi xem xét các phương thức đơn giản và phổ biến nhất có thể được sử dụng
Sử dụng byte[]
Phương thức bytes[] là một hàm sẵn có có thể được sử dụng để chuyển đổi đối tượng thành đối tượng byte
Cú pháp của byte[].bytes[str, enc, error]
Các byte lấy một đối tượng [trong trường hợp của chúng tôi là một chuỗi], phương thức mã hóa được yêu cầu và chuyển đổi nó thành một đối tượng byte. Phương thức bytes[] chấp nhận đối số thứ ba về cách xử lý lỗi
Chúng ta hãy xem mã để chuyển đổi một chuỗi Python thành byte. Loại mã hóa chúng tôi sử dụng ở đây là “UTF-8”
#Using the byte[] method
# initializing string
str_1 = "Join our freelance network"
str_1_encoded = bytes[str_1,'UTF-8']
#printing the encode string
print[str_1_encoded]
#printing individual bytes
for bytes in str_1_encoded:
print[bytes, end = ' ']
Đầu ra như sau. b'Join our freelance network'
74 111 105 110 32 111 117 114 32 102 114 101 101 108 97 110 99 101 32 110 101 116 119 111 114 107
Như bạn có thể thấy phương thức này đã chuyển đổi chuỗi thành một chuỗi byte
Ghi chú. Phương thức này chuyển đổi các đối tượng thành các byte bất biến, nếu bạn đang tìm kiếm một phương thức có thể thay đổi, bạn có thể sử dụng phương thức bytearray[]
Sử dụng mã hóa[]
Phương thức
b'Join our freelance network'
74 111 105 110 32 111 117 114 32 102 114 101 101 108 97 110 99 101 32 110 101 116 119 111 114 107
4 là phương thức được đề xuất và sử dụng phổ biến nhất để chuyển đổi chuỗi Python thành byte. Một lý do chính là nó dễ đọc hơn Trong bài viết này, chúng ta sẽ xem cách chuyển đổi Byte thành Chuỗi trong Python. Đến cuối bài viết này, bạn sẽ có một ý tưởng rõ ràng về những loại này là gì và cách xử lý dữ liệu hiệu quả bằng cách sử dụng chúng
Tùy thuộc vào phiên bản Python bạn đang sử dụng, tác vụ này sẽ khác nhau. Mặc dù Python 2 đã hết tuổi thọ nhưng nhiều dự án vẫn sử dụng nó, vì vậy chúng tôi sẽ đưa vào cả hai cách tiếp cận Python 2 và Python 3
Chuyển đổi byte thành chuỗi trong Python 3
Kể từ Python 3, cách làm việc cũ của ASCII phải thay đổi và Python trở thành Unicode hoàn toàn
Điều này có nghĩa là chúng tôi đã mất loại unicode rõ ràng.
b'Join our freelance network'
74 111 105 110 32 111 117 114 32 102 114 101 101 108 97 110 99 101 32 110 101 116 119 111 114 107
0 - mỗi chuỗi là một b'Join our freelance network'
74 111 105 110 32 111 117 114 32 102 114 101 101 108 97 110 99 101 32 110 101 116 119 111 114 107
0Để phân biệt các chuỗi này với các chuỗi phụ cũ tốt, chúng tôi đã giới thiệu một công cụ xác định mới cho chúng -
>>> codecs.decode[b]
"Let's grab a 🍕!"
1Điều này đã được thêm vào trong Python 2. 6, nhưng nó không phục vụ mục đích thực sự nào ngoài việc chuẩn bị cho Python 3 vì tất cả các chuỗi đều là chuỗi phụ trong 2. 6
Chuỗi byte trong Python 3 được gọi chính thức là
>>> codecs.decode[b]
"Let's grab a 🍕!"
2, một chuỗi số nguyên bất biến trong phạm vi 0 >> codecs.decode[b]
"Let's grab a 🍕!"
2 khác được thêm vào trong 2. 6 là >>> codecs.decode[b]
"Let's grab a 🍕!"
4 - tương tự như >>> codecs.decode[b]
"Let's grab a 🍕!"
2, nhưng có thể thay đổiChuyển đổi byte thành chuỗi bằng giải mã []
Hãy xem cách chúng ta có thể chuyển đổi byte thành Chuỗi, sử dụng phương thức
>>> codecs.decode[b]
"Let's grab a 🍕!"
6 tích hợp cho lớp >>> codecs.decode[b]
"Let's grab a 🍕!"
2Chuyển định dạng mã hóa, chúng tôi đã giải mã đối tượng
>>> codecs.decode[b]
"Let's grab a 🍕!"
2 thành một chuỗi và in nóChuyển đổi byte thành chuỗi bằng codec
Ngoài ra, chúng ta cũng có thể sử dụng mô-đun
>>> codecs.decode[b]
"Let's grab a 🍕!"
9 tích hợp cho mục đích nàybytes[[source[, encoding[, errors]]]]5
Tuy nhiên, bạn không thực sự cần phải chuyển tham số mã hóa, bạn nên chuyển nó vào
>>> codecs.decode[b]
"Let's grab a 🍕!"
Chuyển đổi byte thành chuỗi bằng str[]
Cuối cùng, bạn có thể sử dụng hàm
bytes[[source[, encoding[, errors]]]]70, hàm này chấp nhận nhiều giá trị khác nhau và chuyển đổi chúng thành chuỗi
bytes[[source[, encoding[, errors]]]]7
Tuy nhiên, hãy đảm bảo cung cấp đối số mã hóa cho
bytes[[source[, encoding[, errors]]]]70, nếu không, bạn có thể nhận được một số kết quả không mong muốn
bytes[str, enc, error]
0Điều này đưa chúng ta đến mã hóa một lần nữa. Nếu bạn chỉ định mã hóa sai, trường hợp tốt nhất là chương trình của bạn bị sập vì không thể giải mã dữ liệu. Ví dụ: nếu chúng tôi thử sử dụng hàm
bytes[[source[, encoding[, errors]]]]70 với
bytes[[source[, encoding[, errors]]]]73, chúng tôi sẽ nhận được kết quả
bytes[str, enc, error]
3Điều này thậm chí còn quan trọng hơn vì Python 3 thích sử dụng Unicode - vì vậy nếu bạn đang làm việc với các tệp hoặc nguồn dữ liệu sử dụng mã hóa tối nghĩa, hãy đảm bảo chú ý nhiều hơn
Chuyển đổi byte thành chuỗi trong Python 2
Trong Python 2, một gói byte và một chuỗi thực tế giống nhau - chuỗi là các đối tượng bao gồm các ký tự dài 1 byte, nghĩa là mỗi ký tự có thể lưu trữ 256 giá trị. Đó là lý do tại sao chúng đôi khi được gọi là bytestrings
Điều này thật tuyệt khi làm việc với dữ liệu byte - chúng tôi chỉ cần tải nó vào một biến và chúng tôi sẵn sàng in
bytes[str, enc, error]
4Tuy nhiên, việc sử dụng các ký tự Unicode trong bytestrings sẽ thay đổi hành vi này một chút
Chuyển đổi byte thành Unicode [Python 2]
Ở đây, chúng ta sẽ phải sử dụng loại
bytes[[source[, encoding[, errors]]]]74 của Python 2, loại này được giả định và sử dụng tự động trong Python 3. Điều này lưu trữ các chuỗi dưới dạng một loạt các điểm mã, thay vì byte
bytes[[source[, encoding[, errors]]]]75 biểu thị byte dưới dạng số hex có hai chữ số vì Python không biết cách biểu thị chúng dưới dạng ký tự ASCII
bytes[str, enc, error]
7Như bạn có thể thấy ở trên, chuỗi Unicode chứa
bytes[[source[, encoding[, errors]]]]76 - một ký tự thoát Unicode mà thiết bị đầu cuối của chúng tôi hiện biết cách in ra dưới dạng một lát bánh pizza. Việc thiết lập này dễ dàng như sử dụng bộ xác định
bytes[[source[, encoding[, errors]]]]77 trước giá trị của chuỗi phụ
Vì vậy, làm thế nào để tôi chuyển đổi giữa hai?
Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Bạn có thể lấy chuỗi Unicode bằng cách giải mã chuỗi ký tự của mình. Điều này có thể được thực hiện bằng cách xây dựng một đối tượng Unicode, cung cấp chuỗi byte và chuỗi chứa tên mã hóa làm đối số hoặc bằng cách gọi
bytes[[source[, encoding[, errors]]]]78 trên chuỗi byte
Chuyển đổi byte thành chuỗi bằng cách sử dụng giải mã [] [Python 2]
Bạn cũng có thể sử dụng
bytes[[source[, encoding[, errors]]]]79 từ mô-đun
>>> codecs.decode[b]
"Let's grab a 🍕!"
9#Using the byte[] method
# initializing string
str_1 = "Join our freelance network"
str_1_encoded = bytes[str_1,'UTF-8']
#printing the encode string
print[str_1_encoded]
#printing individual bytes
for bytes in str_1_encoded:
print[bytes, end = ' ']
3Chuyển đổi byte thành chuỗi bằng codec [Python 2]
Hoặc, sử dụng mô-đun
>>> codecs.decode[b]
"Let's grab a 🍕!"
9#Using the byte[] method
# initializing string
str_1 = "Join our freelance network"
str_1_encoded = bytes[str_1,'UTF-8']
#printing the encode string
print[str_1_encoded]
#printing individual bytes
for bytes in str_1_encoded:
print[bytes, end = ' ']
5Hãy chú ý đến mã hóa của bạn
Một lời cảnh báo ở đây - byte có thể được diễn giải khác nhau trong các bảng mã khác nhau. Với khoảng 80 mã hóa khác nhau có sẵn, có thể không dễ để biết liệu bạn đã chọn đúng mã hay chưa
Tin nhắn ban đầu là
bytes[str, enc, error]
02 hoặc bytes[str, enc, error]
03 và cả hai đều có vẻ là chuyển đổi hợp lệPhần kết luận
Là lập trình viên, có một số điều chúng ta phải thường xuyên suy nghĩ và tích cực chuẩn bị để tránh những cạm bẫy. Điều này đặc biệt đúng ở các cấp độ thấp hơn, nơi chúng tôi hiếm khi sử dụng ngôn ngữ cấp cao như Python làm trình điều khiển hàng ngày.
Những thứ như bộ ký tự, mã hóa và nhị phân ở đó để nhắc nhở chúng ta rằng công việc của chúng ta là viết mã - mã hóa suy nghĩ của chúng ta thành các giải pháp khả thi. Rất may, rất nhiều suy nghĩ này trở thành một phần thói quen của chúng tôi sau một vài vòng trên bàn phím