2015-03-17 4 views
0

Я работал над модулем (import module), который поможет преобразовать слова в строку в hex и binary (и, если возможно, восьмеричную). Я закончил шестнадцатеричную часть. Я боюсь в случае двоичного файла. Я не знаю, с чего начать или что делать. Что я хочу сделать, это просто. Он будет принимать входную строку, такую ​​как 'test'. Функция внутри модуля преобразует ее в двоичный файл.Как преобразовать слово в строку в двоичный

То, что я сделал до сих пор приводится ниже:

def string_hex(string): # Converts a word to hex 
    keyword = string.encode() 
    import binascii 
    hexadecimal=str(binascii.hexlify(keyword), 'ascii') 
    formatted_hex=':'.join(hexadecimal[i:i+2] for i in range(0, len(hexadecimal), 2)) 
    return formatted_hex 

def hex_string(hexa): 
# hexa(Given this name because there is a built-in function hex()) should be written as string.For accuracy on words avoid symbols(, . !) 
    string = bytes.fromhex(hexa) 
    formatted_string = string.decode() 
    return formatted_string 

Я сохранил в директории, где я установил свой питона во имя experiment.py .Это как я это называю.

>>> from experiment import string_hex 
>>> string_hex('test') 
'74:65:73:74' 

Как я могу преобразовать его обратно также, как это:

>>> from experiment import hex_string 
>>> hex_string('74657374') 
'test' 

Так же, как это хотел, чтобы преобразовать слова в строки, чтобы binary.And еще одну вещь я использую python 3.4.2 .Please Помоги мне.

ответ

0

Вы можете сделать это следующим образом. Вам даже не нужно импортировать binascii.

def string_hex(string): 
    return ':'.join(format(ord(c), 'x') for c in string) 

def hex_string(hexa): 
    hexgen = (hexa[i:i+2] for i in range(0, len(hexa), 2)) 
    return ''.join(chr(eval('0x'+n)) for n in hexgen) 

def string_bin(string): 
    return ':'.join(format(ord(c), 'b') for c in string) 

def bin_string(binary): 
    bingen = (binary[i:i+7] for i in range(0, len(binary), 7)) 
    return ''.join(chr(eval('0b'+n)) for n in bingen) 

А вот выход:

>>> string_hex('test') 
'74:65:73:74' 
>>> hex_string('74657374') 
'test' 
>>> string_bin('test') 
'1110100:1100101:1110011:1110100' 
>>> bin_string('1110100110010111100111110100') 
'test' 
+0

Спасибо lot.Never сделал бы это без вас. –

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