Hướng dẫn concat string to bytes python - nối chuỗi thành byte python

TypeError: Không thể kết nối str to byte trong python #

Python "TypeError: Không thể kết nối các byte" xảy ra khi chúng ta cố gắng kết hợp đối tượng byte và một chuỗi. Để giải quyết lỗi, giải mã đối tượng byte thành một chuỗi trước khi kết nối các chuỗi.

Hướng dẫn concat string to bytes python - nối chuỗi thành byte python

Dưới đây là một ví dụ về cách xảy ra lỗi.

Copied!

my_bytes = b'hello ' my_str = 'world' # ⛔️ TypeError: can't concat str to bytes result = my_bytes + my_str

Chúng tôi đã cố gắng sử dụng toán tử bổ sung (+) để kết hợp đối tượng byte và một chuỗi gây ra lỗi.

Các giá trị ở bên trái và bên phải cần phải là loại tương thích.

Một cách để giải quyết lỗi là chuyển đổi đối tượng byte thành chuỗi.

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"

Phương thức byte.decode trả về một chuỗi được giải mã từ các byte đã cho. Mã hóa mặc định là utf-8.

Ngoài ra, bạn có thể mã hóa chuỗi thành một đối tượng byte.

Copied!

my_bytes = b'hello ' my_str = 'world' result = my_bytes + my_str.encode('utf-8') print(result) # 👉️ b"hello world"

Phương thức str.encode trả về một phiên bản được mã hóa của chuỗi dưới dạng đối tượng byte. Mã hóa mặc định là utf-8.

Dù bằng cách nào, bạn phải đảm bảo rằng các giá trị ở phía bên trái và bên phải của toán tử bổ sung (+) là các loại tương thích (ví dụ: hai chuỗi).

Khi bạn chuyển đổi đối tượng byte thành một chuỗi, bạn có thể sử dụng các chuỗi chữ được định dạng.

Copied!

# 👇️ decode bytes object my_bytes = b'hello '.decode('utf-8') my_str = 'world' result = f'{my_bytes} {my_str}' print(result) # "hello world"

Các chuỗi chữ được định dạng (F-Strings) Hãy cho chúng tôi bao gồm các biểu thức bên trong chuỗi bằng cách tiền tố chuỗi với

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"
1.

Hãy chắc chắn để bọc các biểu thức trong niềng răng xoăn -

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"
2.

Nếu bạn không chắc chắn loại cửa hàng biến loại A nào, hãy sử dụng lớp

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"
3 tích hợp.

Copied!

# 👇️ decode bytes object my_bytes = b'hello ' print(type(my_bytes)) # 👉️ print(isinstance(my_bytes, bytes)) # 👉️ True my_str = 'world' print(type(my_str)) # 👉️ print(isinstance(my_str, str)) # 👉️ True

Loại loại trả về loại của một đối tượng.

Hàm isinstance trả về

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"
4 nếu được truyền trong đối tượng là một thể hiện hoặc một lớp con của được truyền trong lớp.

Sự kết luận #

Python "TypeError: Không thể kết nối các byte" xảy ra khi chúng ta cố gắng kết hợp đối tượng byte và một chuỗi. Để giải quyết lỗi, giải mã đối tượng byte thành một chuỗi trước khi kết nối các chuỗi.

Có thể là concatenate byte cho str?

>>> b = b'this is bytes'
>>> s = 'this is string'
>>> b + s
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat str to bytes
>>> 

Nó không thể dựa trên mã đơn giản ở trên.

Lý do tôi hỏi điều này vì tôi đã thấy một mã mà byte đã được nối với str? Đây là đoạn trích của mã.

buf =  ""
buf += "\xdb\xd1\xd9\x74\x24\xf4\x5a\x2b\xc9\xbd\x0e\x55\xbd"

buffer = "TRUN /.:/" + "A" * 2003 + "\xcd\x73\xa3\x77" + "\x90" * 16 +  buf + "C" * (5060 - 2003 - 4 - 16 - len(buf))

Bạn có thể thấy mã đầy đủ ở đây.

http://sh3llc0d3r.com/vulnserver-trun-command-buffer-overflow-exploit/

Hỏi ngày 30 tháng 9 năm 2020 lúc 14:41Sep 30, 2020 at 14:41

6

Mã hóa chuỗi thành byte để có được kết quả trong byte:

print(b'byte' + 'string'.encode())
# b'bytestring'

Hoặc giải mã các byte thành một chuỗi để nhận kết quả là str:

print(b'byte'.decode() + 'string')
# bytestring

Đã trả lời ngày 30 tháng 9 năm 2020 lúc 14:55Sep 30, 2020 at 14:55

WupswupsWups

2.4391 Huy hiệu vàng5 Huy hiệu bạc17 Huy hiệu đồng1 gold badge5 silver badges17 bronze badges

Đoạn mã thứ hai cho thấy các chuỗi được nối. Bạn sẽ cần chuyển đổi các byte thành một chuỗi (như trong câu hỏi chuyển đổi byte thành một chuỗi). Hãy thử điều này:

Copied!

my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"
5. Nó sẽ cung cấp cho bạn đầu ra bạn cần.

Đã trả lời ngày 30 tháng 9 năm 2020 lúc 14:49Sep 30, 2020 at 14:49

Hướng dẫn concat string to bytes python - nối chuỗi thành byte python

SethsethSeth

2.1041 Huy hiệu vàng6 Huy hiệu bạc21 Huy hiệu đồng1 gold badge6 silver badges21 bronze badges

0

Làm thế nào để bạn kết hợp một chuỗi và một byte trong Python?

Python Concatenate String và Byte để nối các chuỗi và byte Chúng tôi sẽ sử dụng toán tử + để kết nối, và chúng tôi cũng sử dụng str () để chuyển đổi byte thành loại chuỗi, và sau đó nó sẽ được nối. Để có được đầu ra, tôi đã sử dụng in (my_str + str (byte)).use the + operator to concatenate, and also we use str() to convert the bytes to string type, and then it will be concatenated. To get the output, I have used print(my_str + str(bytes)).

Bạn có thể nối các byte không?

Giải pháp được đề xuất để kết hợp hai hoặc nhiều mảng byte đang sử dụng bytearrayoutputstream.Ý tưởng là viết byte từ mỗi mảng byte vào luồng đầu ra, sau đó gọi tobytearray () để lấy nội dung hiện tại của luồng đầu ra dưới dạng mảng byte.using ByteArrayOutputStream . The idea is to write bytes from each of the byte arrays to the output stream, and then call toByteArray() to get the current contents of the output stream as a byte array.

Làm cách nào để kết hợp hai byte trong Python?

Để tham gia một danh sách các byte, hãy gọi phương thức byte.join (danh sách).Nếu bạn cố gắng tham gia một danh sách các byte trên một dấu phân cách chuỗi, Python sẽ ném một kiểu mẫu, vì vậy hãy đảm bảo gọi nó trên đối tượng byte b ''.tham gia(...)call the Byte. join(list) method. If you try to join a list of Bytes on a string delimiter, Python will throw a TypeError , so make sure to call it on a Byte object b' '. join(...)

Làm thế nào để bạn kết hợp các chuỗi trong Python?

Hai chuỗi có thể được nối trong Python bằng cách sử dụng toán tử '+' giữa chúng.Nhiều hơn hai chuỗi có thể được nối bằng toán tử '+'.using the '+' operator between them. More than two strings can be concatenated using '+' operator.