Python 2 chuỗi thành byte

Trong bài đăng này, chúng tôi sẽ kiểm tra cách chuyển đổi chuỗi Python thành đối tượng. Các đối tượng byte là các chuỗi bất biến của các byte đơn trong phạm vi từ o đến 255 [đã bao gồm]

 

Giới thiệu

Trong bài đăng này, chúng tôi sẽ kiểm tra cách chuyển đổi chuỗi Python thành đối tượng. Các đối tượng byte là các chuỗi bất biến của các byte đơn [1] trong phạm vi từ o đến 255 [đã bao gồm] [2]

Một trong những cách để thực hiện chuyển đổi này là sử dụng hàm tạo của lớp byte, chuyển chuỗi làm đầu vào. Ngoài ra, chúng ta cần chỉ định mã hóa văn bản [ở định dạng chuỗi] làm đối số thứ hai của hàm tạo [3]

Ngoài ra, chúng ta có thể lấy phiên bản được mã hóa của chuỗi dưới dạng đối tượng byte bằng cách gọi phương thức [4]. Phương thức này cũng nhận đầu vào là mã hóa văn bản dưới dạng chuỗi, mặc dù đối lập với hàm tạo đã đề cập trước đó, tham số này là tùy chọn và mặc định là UTF-8 [4]. Bạn có thể đọc thêm về mã hóa tiêu chuẩn Python

Hướng dẫn này đã được thử nghiệm trên Python phiên bản 3. 6


Mật mã

Chúng tôi sẽ bắt đầu bằng cách khai báo một chuỗi mà chúng tôi sẽ sử dụng để chuyển đổi thành byte bằng hai quy trình được đề cập trong phần giới thiệu

string = "Hello world"

Sau đó, sử dụng cách tiếp cận đầu tiên, chúng ta sẽ tạo một đối tượng bytes từ chuỗi trước đó. Để làm như vậy, chúng ta chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte. Thứ hai, chúng ta cần chỉ định mã hóa, sẽ là utf-8

Chúng tôi sẽ lưu trữ kết quả trong một biến và sau đó in loại của nó, vì vậy chúng tôi có thể xác nhận rằng đó thực sự là một đối tượng byte. Để in loại biến, chúng ta chỉ cần sử dụng hàm của Python

Chúng tôi cũng sẽ in đối tượng byte của mình, được tạo từ chuỗi

bytes1 = bytes[string, 'utf-8']
print[type[bytes1]]
print[bytes1]

Kết quả được hiển thị dưới đây trong hình 1. Như có thể thấy, chúng ta có được một đối tượng byte lớp, như mong đợi. Lưu ý rằng mặc dù việc in đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu chứa trong đó thực sự là các byte, như chúng ta sẽ thấy bên dưới

Hình 1 – Chuỗi thành byte, sử dụng hàm tạo đối tượng byte

Tiếp tục, bây giờ chúng ta sẽ sử dụng quy trình chuyển đổi thứ hai được đề cập, đó là gọi phương thức mã hóa trên chuỗi. Như đã nêu trong phần giới thiệu, vì phương thức này có UTF-8 làm mã hóa mặc định khi không có đối số nào được đưa ra, nên chúng tôi sẽ không chuyển bất kỳ đầu vào nào cho nó

Chúng tôi sẽ in lại đối tượng được trả về bởi phương thức này, để xác nhận rằng đây cũng là đối tượng byte

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]

Kết quả cho phần mã này có thể được nhìn thấy bên dưới tại hình 2

Hình 2 – Chuỗi thành byte, sử dụng phương thức mã hóa chuỗi

Để kiểm tra giá trị thực của từng byte của cả hai đối tượng byte, chúng ta có thể lặp lại chúng bằng vòng lặp for in và in từng phần tử

Lưu ý rằng trong Python 3  là một hàm có đối số được gọi là end, mặc định là “\n”, được thêm vào cuối đầu vào để in [5]. Do đó, nếu chúng ta chỉ định đối số này là khoảng trắng [““], tất cả các byte của mỗi đối tượng sẽ được in với khoảng cách giữa chúng, thay vì mỗi byte được in trong một dòng mới

for b1 in bytes1:
    print[b1, end=' ']

print[]

for b2 in bytes2:
    print[b2, end=' ']

Như thể hiện trong hình 3, cả hai đối tượng đều có cùng một chuỗi byte

Hình 3 – Chuỗi byte từ cả hai đối tượng

Mã nguồn cuối cùng có thể được nhìn thấy dưới đây

string = "Hello world"

bytes1 = bytes[string, 'utf-8']
print[type[bytes1]]
print[bytes1]

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]

for b1 in bytes1:
    print[b1, end=' ']

print[]

for b2 in bytes2:
    print[b2, end=' ']

Lưu ý cuối cùng, nếu chúng ta cố gắng gán giá trị cho một byte của một trong các đối tượng byte [bằng cách sử dụng toán tử []], thì chúng ta sẽ nhận được ngoại lệ như trong hình 4, do thực tế là các đối tượng byte

Chuyển đổi giữa các chuyển đổi như thường lệ khá phổ biến, nhưng chuyển đổi giữa một chuỗi thành byte ngày nay phổ biến hơn do thực tế là để xử lý tệp hoặc Machine Learning [ Pickle File ], chúng tôi yêu cầu chuyển đổi chuỗi thành byte một cách rộng rãi. Hãy thảo luận về những cách nhất định mà điều này có thể được thực hiện

Phương pháp số 1. Sử dụng

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
1

Chuỗi có thể được chuyển đổi thành byte bằng hàm byte chung. Hàm này trỏ nội bộ đến Thư viện CPython gọi ngầm hàm mã hóa để chuyển đổi chuỗi thành mã hóa được chỉ định




bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
2

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
3

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
4

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
5

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
6

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
7
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
8
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
0

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
5

The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
2

The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
3______54
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
5
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
6
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
7
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
8

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
5

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
4

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
3

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
12
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
8
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
14
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
15
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
16

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
5

bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
18

The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
3______54
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
21
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
6
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
7
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
24
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
6
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
26
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
6
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
7
The original string : GFG is best
The byte converted string is  : b'GFG is best', type : 
4
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
30
bytes2 = string.encode[]
print[type[bytes2]]
print[bytes2]
31

Có bao nhiêu byte là một chuỗi trong Python?

Lưu ý rằng mỗi chuỗi trong Python cần thêm 49-80 byte bộ nhớ, nơi chuỗi lưu trữ thông tin bổ sung, chẳng hạn như hàm băm, độ dài, . Đó là lý do tại sao một chuỗi trống chiếm 49 byte bộ nhớ.

Làm cách nào để chuyển đổi chuỗi thành mảng byte trong Python?

Phương pháp số 1. Sử dụng byte [str, enc] . Hàm này trỏ nội bộ đến Thư viện CPython gọi ngầm hàm mã hóa để chuyển đổi chuỗi thành mã hóa được chỉ định

Có bao nhiêu byte là một chuỗi?

Nhưng còn chuỗi thì sao? . Tiêu đề đối tượng 8-byte [4-byte SyncBlock và một bộ mô tả loại 4-byte]

Làm cách nào để chuyển đổi chuỗi thành byte như đối tượ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á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.

Chủ Đề