我正在研究一个模块(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
安装我的python的目录中。这就是我称之为的方式。
>>> from experiment import string_hex
>>> string_hex('test')
'74:65:73:74'
就像我能够将它转换回来一样:
>>> from experiment import hex_string
>>> hex_string('74657374')
'test'
就像这样想将字符串中的单词转换为二进制文件。还有一件事我正在使用python 3.4.2
。请帮助我。
答案 0 :(得分:1)
您可以按照以下方式执行此操作。您甚至不必导入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'