Python 转换字符串1';s和0';将s转换为字节数组

Python 转换字符串1';s和0';将s转换为字节数组,python,Python,我有一个长度为8的倍数的字符串,它只包含0和1。我想将字符串转换为适合写入文件的字节数组。例如,如果我有字符串“0010011010011101”,我想得到字节数组[0x26,0x9d],当写入文件时,它将给出0x269d作为二进制(原始)内容 如何在Python中执行此操作?您可以执行以下操作: >>> s = "0010011010011101" >>> [int(s[x:x+8], 2) for x in range(0, len(s), 8)] [38

我有一个长度为8的倍数的字符串,它只包含0和1。我想将字符串转换为适合写入文件的字节数组。例如,如果我有字符串“0010011010011101”,我想得到字节数组[0x26,0x9d],当写入文件时,它将给出0x269d作为二进制(原始)内容


如何在Python中执行此操作?

您可以执行以下操作:

>>> s = "0010011010011101"
>>> [int(s[x:x+8], 2) for x in range(0, len(s), 8)]
[38, 157]

您的问题显示了一个整数序列,但表示“字节数组”,还表示“当写入文件时,将给出0x269d作为二进制(原始)内容”。这是三件截然不同的事情。我想你说得太多了。从您的各种注释来看,您似乎只需要文件输出,而其他描述并不是您想要的

如果你想要一个整数序列,看看格雷格·休吉尔的答案

如果您想要一个字节序列(如字符串)——可以写入文件——请看Martin v。Löwis回答

如果你想要一个字节数组,你必须这样做

import array
intList= [int(s[x:x+8], 2) for x in range(0, len(s), 8)]
byteArray= array.array('B', intList)

[0x26,0x9d]实际上不是字节数组。它是一个由2个整数(内部为4字节有符号值)组成的列表。你是指实际字节还是整数?请澄清您的问题。我应该如何将所需结果写入字节数组而不是整数数组?字节序列可以是字符串(“&\x9d”),也可以是实际数组(array.array('B',[0x26,0x9d])。很多人说“数组”是指列表、元组或其他序列(如字符串)。或者它们可能意味着“数组”,这是一个单独的库。对不起。我编写Python已经两天了,所以还没有掌握它的术语。我想要的是,当写入文件时,将给出一个二进制内容为0x269d的文件。请参阅我的回答。您需要向文件中写入一个字符串;不支持写入数组。如果我将这些整数写入文件,它们将只使用所需的字节,还是会占用整数的全部大小(我想是4个字节)?字节序列就是我要找的。感谢您的帮助。仅int('0010011010011101',2)就足以满足OP的需求
import array
intList= [int(s[x:x+8], 2) for x in range(0, len(s), 8)]
byteArray= array.array('B', intList)