python中的字符串(到二进制)到int?

时间:2016-04-26 16:18:46

标签: python

我想从python中的字符串中创建一个int。我想把字符串首先翻译成二进制文件,如下所示:

st = 'string'
binSt = ' '.join(format(ord(x), '08b') for x in st)

返回:

01110011 01110100 01110010 01101001 01101110 01100111

然后我想将二进制文件(以8为一组)转换为应该返回的整数:

115 116 114 105 110 103

我该怎么做? 在python中可能有一个特殊的函数吗?

5 个答案:

答案 0 :(得分:2)

您可以使用int()功能:

result = ''
st = 'string'
binSt = ' '.join(format(ord(x), '08b') for x in st)
binSt_split = binSt.split()
for split in binSt_split:
    result = result + str(int(split,2) + ' '
print result

答案 1 :(得分:2)

你可以简单地做

r = [int(numbs, 2) for numbs in binSt.split(' ')]

int(str, baseNumber)将读取字符串str并使用int将其转换为baseNumber

所以int("0xFF", 16) = 255int("11", 2) = 3

答案 2 :(得分:2)

为什么不使用bytearray

>>> barr = bytearray('string')
>>> barr[0]
115

Bytearray完全符合您的要求 - 它将字符串中的每个字符解释为0 - >范围内的整数。 255

答案 3 :(得分:1)

在这里使用二进制解决方案:Convert base-2 binary number string to int

 binSt = ' '.join([str(int(format(ord(x), '08b'), 2)) for x in st])

如果你只是想要一个整数数组

 int_array = [int(format(ord(x), '08b'), 2) for x in st]

解决SpoonMeiser评论。你可以避免使用ord(x)

进行中间转换
 int_array = [ord(x) for x in st]

答案 4 :(得分:1)

字符串为二进制,然后为十进制:

st = 'string'
binSt = ' '.join(format(ord(x), '08b') for x in st)
binSt
##'01110011 01110100 01110010 01101001 01101110 01100111'
bin=binSt.split()
bin
##['01110011', '01110100', '01110010', '01101001', '01101110', '01100111']
print(map(lambda x: int(x,2), bin))
##[115, 116, 114, 105, 110, 103]

##用于输出