Hướng dẫn how do you create a byte of a string in python? - làm thế nào để bạn tạo một byte của một chuỗi trong python?

Làm thế nào về cách Python 3 'MemoryView'.memoryview' way.

MemoryView là một loại mớ hỗn độn của các mô -đun byte/bytearray và struct, với một số lợi ích.

  • Không giới hạn ở chỉ văn bản và byte, xử lý các từ 16 và 32 bit nữa
  • Đối phó với sự cố gắng
  • Cung cấp giao diện chi phí rất thấp cho các chức năng và dữ liệu C/C ++ được liên kết

Ví dụ đơn giản nhất, cho một mảng byte:

memoryview[b"some bytes"].tolist[]

[115, 111, 109, 101, 32, 98, 121, 116, 101, 115]

Hoặc cho một chuỗi unicode, [được chuyển đổi thành mảng byte]

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

Có lẽ bạn cần từ ngữ hơn là byte?

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].cast["H"].tolist[]

[65279, 117, 110, 105, 99, 111, 100, 101, 32]

memoryview[b"some  more  data"].cast["L"].tolist[]

[1701670771, 1869422624, 538994034, 1635017060]

Lời cảnh báo. Hãy cẩn thận với nhiều cách giải thích về thứ tự byte với dữ liệu của nhiều hơn một byte: Be careful of multiple interpretations of byte order with data of more than one byte:

txt = "\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020"
for order in ["", "BE", "LE"]:
    mv = memoryview[bytes[txt, f"UTF-16{order}"]]
    print[mv.cast["H"].tolist[]]

[65279, 117, 110, 105, 99, 111, 100, 101, 32]
[29952, 28160, 26880, 25344, 28416, 25600, 25856, 8192]
[117, 110, 105, 99, 111, 100, 101, 32]

Không chắc đó là cố ý hay một lỗi nhưng nó đã bắt gặp tôi !!

Ví dụ đã sử dụng UTF-16, để biết danh sách đầy đủ các codec, hãy xem sổ đăng ký codec trong Python 3.10

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về phương thức python byte [] với sự trợ giúp của các ví dụ.

Phương pháp

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
3 trả về một đối tượng byte bất biến được khởi tạo với kích thước và dữ liệu đã cho.

Thí dụ

message = 'Python is fun'

# convert string to bytes byte_message = bytes[message, 'utf-8']

print[byte_message] # Output: b'Python is fun'

Byte [] cú pháp

Phương pháp cú pháp của phương pháp

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
3 là:

bytes[[source[, encoding[, errors]]]]

Phương thức

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
3 Trả về một đối tượng byte là chuỗi số nguyên bất biến [không thể sửa đổi] trong phạm vi
memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
6.

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 [].

tham số byte []

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
3 lấy ba tham số tùy chọn:

  • Nguồn [Tùy chọn] - Nguồn để khởi tạo mảng byte. - source to initialize the array of bytes.
  • Mã hóa [tùy chọn] - Nếu nguồn là một chuỗi, mã hóa chuỗi. - if the source is a string, the encoding of the string.
  • 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] - if the source is a string, the action to take when the encoding conversion fails [Read more: String encoding]

Tham số nguồn có thể được sử dụng để khởi tạo mảng byte theo các cách sau:source parameter can be used to initialize the byte array in the following ways:

Loại hìnhSự mô tả
Sợi dâyChuyển đổi chuỗi thành byte bằng str.encode [] cũng phải cung cấp mã hóa và lỗi tùy chọnencoding and optionally errors
Số nguyênTạo một mảng có kích thước được cung cấp, tất cả được khởi tạo thành null
Sự vậtBộ đệm chỉ đọc của đối tượng sẽ được sử dụng để khởi tạo mảng byte
Có thể lặp lạiTạo một mảng có kích thước bằng với số lượng ITEBER và được khởi tạo thành các phần tử có thể lặp lại phải có thể lặp lại của số nguyên giữa
memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
8
Không có nguồn [đối số]Tạo một mảng có kích thước 0

byte [] giá trị trả về

Phương thức

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
3 trả về đối tượng byte của kích thước và giá trị khởi tạo đã cho.

Ví dụ 1: Chuyển đổi chuỗi thành byte

string = "Python is interesting."

# string with encoding 'utf-8'

arr = bytes[string, 'utf-8']

print[arr]

Đầu ra

b'Python is interesting.'

Ví dụ 2: Tạo một byte có kích thước số nguyên đã cho

size = 5

arr = bytes[size]

print[arr]

Đầu ra

b'\x00\x00\x00\x00\x00'

Ví dụ 3: Chuyển đổi danh sách có thể lặp lại thành byte

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
0

Đầu ra

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
1

Đội câu trả lời giáo dục

Đối tượng byte là một chuỗi các byte. Các đối tượng byte này có thể đọc được máy và có thể được lưu trữ trực tiếp trên đĩa. Các chuỗi, mặt khác, ở dạng người có thể đọc được và cần được mã hóa để chúng có thể được lưu trữ trên một đĩa.byte object is a sequence of bytes. These byte objects are machine-readable and can be directly stored on the disk. Strings, on the other hand, are in human-readable form and need to be encoded so that they can be stored on a disk.

Có một số loại mã hóa khác nhau có thể ánh xạ văn bản vào đĩa. Những cái phổ biến nhất là các kỹ thuật mã hóa ASCII và UTF-8.

Chuyển đổi chuỗi thành byte

Chúng ta có thể sử dụng lớp

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].cast["H"].tolist[]

[65279, 117, 110, 105, 99, 111, 100, 101, 32]

memoryview[b"some  more  data"].cast["L"].tolist[]

[1701670771, 1869422624, 538994034, 1635017060]

0 tích hợp trong Python để chuyển đổi chuỗi thành byte: chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte và sau đó chuyển mã hóa làm đối số thứ hai.

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 có trong đó là trong byte.

memoryview[bytes["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020", "UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]

#Another way to do the same
memoryview["\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u0020".encode["UTF-16"]].tolist[]

[255, 254, 117, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0, 32, 0]
2

THẺ LIÊN QUAN

Python

dây

Byte

đổi

Bản quyền © 2022 Giáo dục, Inc. Tất cả quyền được bảo lưu

Làm thế nào để bạn biến một chuỗi thành một byte?

Lớp chuỗi cung cấp ba phương thức getBytes quá tải để mã hóa một chuỗi thành mảng byte: getBytes [] - mã hóa bằng cách sử dụng ký tự mặc định của nền tảng.getBytes [CharSetName] - mã hóa bằng cách sử dụng Charset có tên.GetBytes [Charset Charset] - Mã hóa bằng cách sử dụng ký tự được cung cấp.getBytes[] – encodes using platform's default charset. getBytes [String charsetName] – encodes using the named charset. getBytes [Charset charset] – encodes using the provided charset.

Làm thế nào để bạn tạo một đối tượng byte trong Python?

Hàm byte [] trả về đối tượng byte.Nó có thể chuyển đổi các đối tượng thành các đối tượng byte hoặc tạo đối tượng byte trống của kích thước được chỉ định.Sự khác biệt giữa byte [] và bytearray [] là byte [] trả về một đối tượng không thể sửa đổi và bytearray [] trả về một đối tượng có thể được sửa đổi. returns a bytes object. It can convert objects into bytes objects, or create empty bytes object of the specified size. The difference between bytes[] and bytearray[] is that bytes[] returns an object that cannot be modified, and bytearray[] returns an object that can be modified.

Bao nhiêu byte là một python chuỗi?

Lưu ý rằng mỗi chuỗi trong Python có thêm 49-80 byte bộ nhớ, trong đó nó lưu trữ thông tin bổ sung, chẳng hạn như băm, độ dài, độ dài trong byte, loại mã hóa và cờ chuỗi.Đó là lý do tại sao một chuỗi trống mất 49 byte bộ nhớ.49-80 bytes of memory, where it stores supplementary information, such as hash, length, length in bytes, encoding type and string flags. That's why an empty string takes 49 bytes of memory.

Bài Viết Liên Quan

Chủ Đề