如何在保留填充的情况下将填充字符串转换为整数?
我参考了这个很棒的例子: Python: Nicest way to pad zeroes to string (4),但现在我需要把那个加了零的字符串转换成一个加了零的整数。
我试了这个:
list_padded=['0001101', '1100101', '0011011', '0011011', '1101111',
'0000001', '1110111', '1101111', '0111001', '0011011',
'0011001'] # My padded sting list.
int_list=[int(x) for x in list_padded] # convert the string to an INT
但是我得到的只是一个没有加零的整数列表。
如果有人能给我一些建议或者方向,我会很感激。
编辑:
在了解到整数不会加零后,我开始有点不同的想法,不过我觉得还是有必要多解释一下:
我正在做一本书里的基本加密练习。书里给了我一段伪代码让我去实现;
- 获取一个1到127的密码字符串和一条消息,把它们都转换成二进制,去掉前面的0b,然后加零。
但是它希望我在后面的步骤中不使用XOR!我已经一步一步完成到这里,但现在出现了问题:
- 手动进行XOR操作,并把7位的二进制结果附加到加密字符串上
- 把消息字符和密钥的每个二进制位转换成整数
- 对这两个二进制位进行XOR操作
- 把字面上的True和False转换成二进制位,并附加到输出中
我很想使用XOR操作,但我担心这样做会让我无法学到我需要的东西。
4 个回答
0
前导零只是为了数据的表示方式:
"{0:b}".format(4).zfill(8)
你可以用其他位运算来替代异或运算:
def xor(x, y):
return (~x & y) | (~y & x)
def bool_xor(x, y):
return ((not x) and y) or ((not y) and x)
实际上,你可以用一种逻辑运算来表示所有的位运算: http://en.wikipedia.org/wiki/Functional_completeness
5
整数本身并没有填充的概念,但如果你想的话,可以同时存储数值和原始长度,而不仅仅是数值:
int_list = [(int(x), len(x)) for x in list_padded]
这样,如果你想要恢复原始数据,就有足够的信息来做到这一点。你甚至可以考虑创建一个自定义类来存储这两个字段,而不是使用元组。
10
把“填充”这个概念用在整数上是没有意义的。如果你想打印或者表示这些数字,你需要用字符串,整数本身是没有填充的。