首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python级联Bytes

Python级联Bytes
EN

Stack Overflow用户
提问于 2021-08-10 17:13:15
回答 3查看 362关注 0票数 0

如何连接字节例如。样本代码:

代码语言:javascript
复制
data_bs = ''
c = b'\x00\x00\xa0\xe1\x00'

for i in list(range(0, len(c), 2)):
    data_bs += c[i+1] + c[i]

错误码:

代码语言:javascript
复制
TypeError: can only concatenate str (not "int") to str

我想要修正字节顺序。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-10 17:18:41

直接将字节索引为int,因此这里最简单的解决方案是将data_bs变成bytes并使用片:

代码语言:javascript
复制
In [132]: data_bs = b''
     ...: c = b'\x00\x00\xa0\xe1\x00'
     ...:
     ...: for i in list(range(0, len(c), 2)):
     ...:     data_bs += c[i+1:i+2] + c[i:i+1]
     ...:

In [133]: data_bs
Out[133]: b'\x00\x00\xe1\xa0\x00'
票数 2
EN

Stack Overflow用户

发布于 2021-08-10 17:21:41

现在还不清楚你想从问题中把他们连在一起。但是,如果您想创建一个像data_bs这样的字符串,您可以这样做:

代码语言:javascript
复制
for i in c:
    data_bs += str(i)
print(data_bs)
票数 0
EN

Stack Overflow用户

发布于 2021-08-10 17:22:20

为了获得最好的性能,预先分配输出数组,然后按照所需的顺序复制字节。

代码语言:javascript
复制
a = b'\x00\x01\x02\x03'
b = bytearray(len(a))

for cnt in range(0, int(len(a) / 2)):
    b[cnt * 2] = a[cnt * 2 + 1]
    b[cnt * 2 + 1] = a[cnt * 2]

print(a)
print(b)

考虑一下,如果长度是奇怪的,该怎么做?

代码语言:javascript
复制
if len(a) % 2 == 1:
    b[len(a) - 1] = a[len(a) - 1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68730985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档