如何将字符串中的单词转换为二进制
How to convert a word in string to binary
我正在开发一个模块(import module
的东西),它有助于将字符串中的单词转换为 hex
和 binary
(如果可能的话还有八进制)。我完成了十六进制 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'
我正在开发一个模块(import module
的东西),它有助于将字符串中的单词转换为 hex
和 binary
(如果可能的话还有八进制)。我完成了十六进制 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'