字符串转01数字串代码如下,就是两个简单for循环的应用,但输出结果不对
def coding_plain(p):
p0 = [[0] * 8] * 8
flag_i = 0
for i in p:
i0 = bin(ord(i))
i1 = i0.replace('0b', '')
i2 = '0' + i1
flag_j = 0
for j in i2:
p0[flag_i][flag_j] = int(j)
flag_j += 1
flag_i += 1
print(p0)
return p0
plain = 'Itsrainy'
coding_plain(plain)
测试输出:
[[0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1], [0, 1, 1, 1, 1, 0, 0, 1]]
正确结果应该是:
1 0 0 1 0 0 1 0
0 0 1 0 1 1 1 0
1 1 0 0 1 1 1 0
0 1 0 0 1 1 1 0
1 0 0 0 0 1 1 0
1 0 0 1 0 1 1 0
0 1 1 1 0 1 1 0
1 0 0 1 1 1 1 0(大小端调一下)
代码有问题:
def coding_plain(p):
p0 = []
for i in p: p0.append(' '.join(list('{:0>8}'.format('{:b}'.format(ord(i))))[::-1]))
for i in p0: print(i)
return p0
plain = 'Itsrainy'
coding_plain(plain)