据我了解,像/ dev / urandom这样的文件只提供一个恒定的比特流。终端模拟器然后尝试将它们解释为字符串,这导致一堆无法识别的字符。
我如何在python中执行相同的操作,将一串1和0作为“原始位”发送到终端?
修改 我可能需要澄清一下: 例如,我想要“打印”的字符串是1011100.在ascii系统上,输出应为“\”。如果我cat / dev / urandom,它提供一个恒定的比特流。打印得像这样:“ c g/ t] + __ - ;”。这就是我想要的。
答案 0 :(得分:3)
Stephano:关键是上面“@you”的不完整答案 - chr函数:
import random, sys
for i in xrange(500):
sys.stdout.write(chr(random.randrange(256)))
答案 1 :(得分:1)
使用chr
功能。我接受0到255之间的输入并返回一个包含与该值对应的字符的字符串。
答案 2 :(得分:0)
import sys, random
while True:
sys.stdout.write(chr(random.getrandbits(8)))
sys.stdout.flush()
答案 3 :(得分:0)
从another question on StackOverflow开始,您可以获得_bin
功能。
def _bin(x, width):
return ''.join(str((x>>i)&1) for i in xrange(width-1,-1,-1))
然后简单地调用_bin(ord(x), 8)
x
是一个字符(长度为1的字符串)