如何将字节连接在一起

时间:2015-10-12 15:52:22

标签: python python-2.7 struct byte

以下是代码段: -

join_values = []
new_byteArray = [128, 0, 0, 0, 86, 70, 124, -96]
for values in byteArray:
    values = long(values)
    store_values = struct.pack('!q', values)
    join_values.append(store_values)
print join_values

这会产生正确的结果: -

['\x00\x00\x00\x00\x00\x00\x00\x80',
 '\x00\x00\x00\x00\x00\x00\x00\x00', 
 '\x00\x00\x00\x00\x00\x00\x00\x00', 
 '\x00\x00\x00\x00\x00\x00\x00\x00', 
 '\x00\x00\x00\x00\x00\x00\x00V', 
 '\x00\x00\x00\x00\x00\x00\x00F', 
 '\x00\x00\x00\x00\x00\x00\x00|', 
 '\xff\xff\xff\xff\xff\xff\xff\xa0']

这个结果是正确的,但是我没有任何方法可以做一个组合包或做一些事情,以便8个字节中的最后一个连接在一起,这样我就可以得到输出: -

\x80\x00\x00x00VF|\xa0

1 个答案:

答案 0 :(得分:3)

好吧,您可以使用s从字符串s[-1]获取最后一个字节。

python2.7有一个名为list comprehension的功能,可用于对列表的每个元素执行转换。

最后,将join字符串放在一起。

将它们放在一起看起来像

my_transformed_list = [s[-1] for s in join_values]
concatenated = ''.join(my_transformed_list)

另一种解决方法是使用函数式编程。对列表的每个元素执行转换的行为称为map

my_transformed_list2 = map(lambda s: s[-1], j)
concatenated2 = ''.join(my_transformed_list2)