如何将字符串中的单词转换为二进制

How to convert a word in string to binary

我正在开发一个模块(import module 的东西),它有助于将字符串中的单词转换为 hexbinary(如果可能的话还有八进制)。我完成了十六进制 part.But 现在我很挣扎,以防 binary.I 不知道从哪里开始或要做什么 do.What 我想做的是 simple.It 会接受一个输入字符串例如'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

我保存在我安装我的python的目录里,名字是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。请帮助我。

您可以按照以下方式进行。您甚至不必导入 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'