Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các kiểu Sequence nhị phân trong Python


bytes và bytearray được dùng để thao tác dữ liệu nhị phân trong Python. Các bytes và bytearray được hỗ trợ bởi buffer protocol, tên là memoryview. Memoryview có thể truy cập bộ nhớ của đối tượng nhị phân khác mà không cần sao chép dữ liệu thực tế.

Byte literals có thể tạo bằng các cách:

  • b'This is bytes with single quote'

  • b"Another set of bytes with double quotes"

  • b'''Bytes using three single quotes''' hoặc b"""Bytes using three double quotes"""

Một số phương thức liên quan đến bytes và bytearray:

Phương thức fromhex(string)

fromhex() trả về đối tượng bytes. Nhận một chuỗi nơi mỗi byte chứa hai chữ số hex. ASCII whitespace sẽ bị bỏ qua.

Phương thức hex()

hex() trả về hai chữ số hex từ mỗi byte.

Phương thức replace(byte, new_byte)

replace() thay thế byte bằng new_byte.

Phương thức count(sub[, start[, end]])

Trả về số lần xuất hiện không chồng chéo của substring. Kiểm tra giữa start và end.

Phương thức find(sub[, start[, end]])

find() tìm lần xuất hiện đầu tiên của substring. Nếu thành công, trả về chỉ số, ngược lại trả về -1.

Phương thức partition(sep)

Phương thức Partition tách chuỗi bằng separator. Tạo list các partition.

Phương thức memoryview(obj)

memoryview() trả về đối tượng memory view của đối số. Memory view là cách an toàn để biểu diễn Python buffer protocol. Cho phép truy cập buffer nội bộ của một đối tượng.

Ví dụ mã

hexStr = bytes.fromhex('A2f7 4509')
print(hexStr)
byteString = b'\xa2\xf7E\t'
print(byteString.hex())
bArray1 = b"XYZ"
bArray2 = bArray1.replace(b"X", b"P")
print(bArray2)
byteArray1 = b'ABBACACBBACA'
print(byteArray1.count(b'AC'))
print(byteArray1.find(b'CA'))
bArr = b'Mumbai,Kolkata,Delhi,Hyderabad'
partList = bArr.partition(b',')
print(partList)
myByteArray = bytearray('String', 'UTF-8')
memView = memoryview(myByteArray)
print(memView[2])  # ASCII của 'r'
print(bytes(memView[1:5]))

Kết quả

b'\xa2\xf7E\t'
a2f74509
b'PYZ'
3
4
(b'Mumbai', b',', b'Kolkata,Delhi,Hyderabad')
114
b'trin'