代码之家  ›  专栏  ›  技术社区  ›  Stefano Palazzo

用python将原始位发送到终端

  •  0
  • Stefano Palazzo  · 技术社区  · 14 年前

    据我所知,像/dev/urandom这样的文件只提供恒定的位流。然后,终端仿真器尝试将它们解释为字符串,这会导致大量未识别的字符。

    我该如何在python中做同样的事情,将一串1和0作为“原始位”发送到终端?

    编辑 我可能需要澄清: 例如,我要“打印”的字符串是1011100。在一个ASCII系统上,输出应该是“\”。如果我cat/dev/urandom,它将提供恒定的位流。打印如下:“_____________这就是我想要的。

    4 回复  |  直到 14 年前
        1
  •  3
  •   jsbueno    14 年前

    Stephano:键是上面“@you”的不完整答案-chr函数:

    import random, sys
    
    for i in xrange(500):
       sys.stdout.write(chr(random.randrange(256)))
    
        2
  •  1
  •   You    14 年前

    使用 chr 功能。我接受0到255之间的输入,并返回一个字符串,其中包含与该值对应的字符。

        3
  •  0
  •   Community CDub    7 年前

    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的字符串)

        4
  •  0
  •   Chris B.    14 年前
    import sys, random
    while True:
        sys.stdout.write(chr(random.getrandbits(8)))
        sys.stdout.flush()