📅  最后修改于: 2020-07-30 01:08:13             🧑  作者: Mango
数据转换一直是广泛使用的实用程序,其中之一可以是等效于其字符串的二进制转换。
让我们讨论实现此目的的某些方法。
方法1:
天真的方法是通过将二进制数字的总和(dn)
乘以它们的乘方幂来将给定的二进制数据转换为十进制2*(2^n)
。二进制数据分为7位,因为这组二进制作为输入,返回相应的十进制值,该值是ASCII
字符串字符的代码。然后使用chr()
功能将该ASCII代码转换为字符串。
注意:这里我们将二进制数据切片为7组,因为原始ASCII表是按7位编码的,因此它具有128个字符。
# Python3代码演示使用BinarytoDecimal(binary)+ chr()将二进制转换为字符串的工作
# 定义BinarytoDecimal()函数
def BinaryToDecimal(binary):
binary1 = binary
decimal, i, n = 0, 0, 0
while(binary != 0):
dec = binary % 10
decimal = decimal + dec * pow(2, i)
binary = binary//10
i += 1
return (decimal)
# 驱动程序代码初始化二进制数据
bin_data ='10001111100101110010111010111110011'
# 打印二进制数据
print("二进制值为:", bin_data)
# 初始化一个空字符串以存储字符串数据
str_data =' '
# 切分输入并将其转换为十进制,然后将其转换为字符串
for i in range(0, len(bin_data), 7):
# 从索引范围[0,6]切片bin_data并将其存储为temp_data中的整数
temp_data = int(bin_data[i:i + 7])
# 在BinarytoDecimal()函数中传递temp_data以获取相应temp_data的十进制值
decimal_data = BinaryToDecimal(temp_data)
# 使用chr()函数解码BinarytoDecimal()函数返回的十进制值,该函数返回给定ASCII值的字符串对应字符,并将其存储在str_data中
str_data = str_data + chr(decimal_data)
# 打印结果
print("字符串转换后的二进制值是:",
str_data)
输出:
二进制值为: 10001111100101110010111010111110011
字符串转换后的二进制值是: Geeks
方法2:使用int()函数
每当一个int()
函数提供两个参数时,它就告诉该int()
函数第二个参数是输入字符串的基数。如果输入字符串大于10,则Python假定下一个数字序列来自ABCD...
。因此,此概念可用于将二进制序列转换为字符串。下面是实现。
# Python3代码演示使用BinarytoDecimal(binary)+ chr()将二进制转换为字符串的工作
# 定义BinarytoDecimal()函数
def BinaryToDecimal(binary):
# Using int function to convert to
# string
string = int(binary, 2)
return string
# 驱动程序代码初始化二进制数据
bin_data ='10001111100101110010111010111110011'
# 打印二进制数据
print("二进制值为:", bin_data)
# 初始化一个空字符串以存储字符串数据
str_data =' '
# 切分输入并将其转换为十进制,然后将其转换为字符串
for i in range(0, len(bin_data), 7):
# 从索引范围[0,6]切片bin_data并将其存储在temp_data中
temp_data = bin_data[i:i + 7]
# 在BinarytoDecimal()函数中传递temp_data以获取相应temp_data的十进制值
decimal_data = BinaryToDecimal(temp_data)
# 使用chr()函数解码BinarytoDecimal()函数返回的十进制值,该函数返回给定ASCII值的字符串对应字符,并将其存储在str_data中
str_data = str_data + chr(decimal_data)
# 打印结果
print("字符串转换后的二进制值是:",
str_data)
输出:
二进制值为: 10001111100101110010111010111110011
字符串转换后的二进制值是: Geeks