开发者

sending raw bits to the terminal in python

开发者 https://www.devze.com 2023-01-07 03:32 出处:网络
As I understand it, files like /dev/urandom provide just a constant stream of bits. The terminal emulator then tries to interpret them as strings, which results in a mess of unrecognised characters.

As I understand it, files like /dev/urandom provide just a constant stream of bits. The terminal emulator then tries to interpret them as strings, which results in a mess of unrecognised characters.

How would I go about doing the same thing in python, send a string of ones and zeros to the terminal as "raw bits"?

edit I may have to clarify: Say f开发者_Go百科or example the string I want to "print" is 1011100. On an ascii system, the output should be "\". If I cat /dev/urandom, it provides a constant stream of bits. Which get printed like this: "���c�g/�t]+__��-�;". That's what I want.


Stephano: the key is the incomplete answer by "@you" above - the chr function :

import random, sys

for i in xrange(500):
   sys.stdout.write(chr(random.randrange(256)))


Use the chr function. I takes an input between 0 and 255 and returns a string containing the character corresponding to that value.


And from another question on StackOverflow you can get a _bin function.

def _bin(x, width):
    return ''.join(str((x>>i)&1) for i in xrange(width-1,-1,-1))

Then simply put call _bin(ord(x), 8) where x is a character (string of length one)


import sys, random
while True:
    sys.stdout.write(chr(random.getrandbits(8)))
    sys.stdout.flush()
0

精彩评论

暂无评论...
验证码 换一张
取 消