Python-将字符串转换为m位数字

Python-将字符串转换为m位数字,python,string-conversion,Python,String Conversion,假设我有一个字符串str=“hello”,每个字符都可以转换为ascii码,即: "104, 101, 108, 108, 111" = "0b01101000, 0b01100101, 0b01101100, 0b01101100, 0b01101111" 每个字符长度为8位,每个数字小于2^8 现在我想知道如何转换任意m位长的数字。例如,如果m=10,则它变为 "0b0110100001, 0b1001010110, 0b1100011011, 0b0001101111" = "417,

假设我有一个字符串str=“hello”,每个字符都可以转换为ascii码,即:

"104, 101, 108, 108, 111" = "0b01101000, 0b01100101, 0b01101100, 0b01101100, 0b01101111"
每个字符长度为8位,每个数字小于2^8

现在我想知道如何转换任意m位长的数字。例如,如果m=10,则它变为

"0b0110100001, 0b1001010110, 0b1100011011, 0b0001101111" = "417, 598, 795, 111"
每个数字都小于2^m

我目前的想法是:

str = "hello"
tmp = ""
for i in str:
    tmp = tmp + bin(ord(i))[2:].zfill(8)

print tmp

m=10
for i in xrange(0,len(tmp),m):
    print int(tmp[i:i+m],2)
但我想知道是否有更有效的方法来做到这一点


谢谢

如果您正在寻找二进制、八进制、十六进制等标准转换;您可以使用以下格式:

对于二进制:

numbers = "417, 598, 795, 111"
print ','.join(["{0:b}".format(int(n,10)) for n in numbers.split(',')])
输出:

110100001,1001010110,1100011011,1101111
1047,1432,1941,273
您还可以使用
int
进行转换(对于无效数字无效):

输出:

110100001,1001010110,1100011011,1101111
1047,1432,1941,273

你可以这样做:

s = "hello"
print ['0b{:0{bits}b}'.format(ord(c), bits=10) for c in s]
输出:

['0b0001101000','0b0001100101','0b0001101100','0b0001101100','0b0001101111']