Python-将字符串转换为m位数字
假设我有一个字符串str=“hello”,每个字符都可以转换为ascii码,即: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,
"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']