Python将字节串连接成字符串

6

能否将字节串连接到字符串中?

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

仅凭上面的简单代码是不可能实现的。

我之所以问这个问题,是因为我看到了一些将字节串连接到字符串的代码。以下是代码片段:

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))

你可以在这里查看全部代码。 http://sh3llc0d3r.com/vulnserver-trun-command-buffer-overflow-exploit/

1
请注意,第二段代码仅使用字符串... - Tomerikoo
1
不可能,正如错误信息所示。你展示的不是将字节连接到字符串上,而是将两个字符串连接起来。检查type("\xdb\xd1\xd9\x74\x24\xf4\x5a\x2b\xc9\xbd\x0e\x55\xbd") - juanpa.arrivillaga
这回答解决了你的问题吗?无法将字节串连接到字符串;https://stackoverflow.com/questions/46259640/cant-concat-bytes-to-str-converting-to-python3 - Tomerikoo
1
@juanpa.arrivillaga 可能他看到的代码是为 Python 2.7 编写的,其中 bytes 只是 str 的同义词。话虽如此,他发布的代码片段中并没有 bytes - blhsing
哎呀...Python2 中的 b'' 字符串,其中 str 类型在 Python2 中是可以运行良好的。OP 的链接显示的代码是从2015年编写的,很可能是为了在 Python2 上运行而设计的。 - rasjani
对不起,是我的错。我应该删除这个问题吗? - user13353532
2个回答

7
将字符串编码为字节以得到字节结果:
print(b'byte' + 'string'.encode())
# b'bytestring'

或将字节解码为字符串,以获得 str 类型的结果:

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

1
第二段代码片段展示了字符串的拼接。你需要将字节转换为字符串(如问题 将字节转换为字符串 中所示)。尝试使用以下代码:b.decode("utf-8") + s。这应该会给你所需的输出结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接