2010-07-10 2 views
0

Как я понимаю, файлы типа/dev/urandom предоставляют только постоянный поток бит. Затем эмулятор терминала пытается интерпретировать их как строки, что приводит к беспорядку непризнанных символов.отправка сырых битов в терминал в python

Как я мог бы сделать то же самое в python, отправить строку из них и нули на терминал как «сырые биты»?

редактировать я, возможно, придется уточнить: Скажем, например, строка, я хочу «Печать» является 1011100. В системе ASCii, вывод должен быть «\». Если я cat/dev/urandom, он обеспечивает постоянный поток бит. Которые печатаются следующим образом: « c g/t] + __ - ;». Это то, что я хочу.

+0

'в то время как True: печать«CG/т] + __- «Как всякий мусор, как любой другой;) Почему вы хотите это сделать? Есть заставки «матричный фильм», которые выглядят круче. – msw

+0

Строка не является потоком, а не двоичным числом. Вы используете термины взаимозаменяемо, что очень сбивает с толку. –

ответ

3

Stephano: ключ является неполным ответом на "@You" выше - КПЧ функции:

import random, sys 

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

Спасибо, это именно то, что я искал. –

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

Я, возможно, неправильно сформулировал это. Выходной поток программы не должен содержать строку, содержащую одни и нули, а скорее единицы и нули в их чистом виде, такие как те, из которых будет состоять строка. Число 1 представлено в ascii как 49, или 011 0001. Программа не должна отправлять двоичный код 49 на терминал, но вместо моего потока из них и нули. Если в потоке будет последовательность 011 0001, терминал будет интерпретировать это как букву ascii «1». Надеюсь, это объясняет, о чем я говорю. –

+1

Затем отредактируйте свой вопрос. –

+0

вопрос довольно недвусмыслен. Интересно, как можно интерпретировать «беспорядок непризнанных персонажей» как символы «0» и «1». – jsbueno

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 является символ (строка длины одного)

+0

Это не отвечает на вопрос ... он выводит строчные символы вместо «0» и «1». – jsbueno

+0

Э-э. Я не читал внимательно, не так ли? – Umang

1

Используйте функцию chr. Я беру ввод между 0 и 255 и возвращает строку, содержащую символ, соответствующий этому значению.

Смежные вопросы