项目: 向每个字符的数字ASCII值添加1。 将其转换为位字符串。 将此字符串的位向左移动一个位置。 加密字符串中的单个空格字符分隔生成的位字符串
程序输入和输出示例如下所示:
输入一条消息:你好,世界
0010011001101011011011011100001 0000111110001 1100001 1100111 1011011011 1001011 000101
# Put your code here
string = input("Enter message: ")
#Convert string from ASCII to Decimal
A_string = [ord(c) for c in string]
print(A_string)
# add 1 to ASCII value
B_string = A_string
for i in range(len(B_string)):
B_string[i] = B_string[i] + 1
print(B_string)
#Decimal to Binary
decimal = B_string
remainder = decimal
Binary_string = decimal
for i in range(len(decimal)):
remainder[i] = int(decimal[i])
remainder[i] %= 2
decimal[i] = decimal[i] // 2
Binary_string[i] = str(remainder[i] + Binary_string[i])
print(Binary_string)
#Shift Left
length = len(Binary_string)-1
start = 1
shiftLeft = ''
while length !=0:
shiftLeft = shiftLeft + Binary_string[start] + " "
length -= 1
start += 1
shiftLeft += Binary_string[0]
print(shiftLeft)
我的结果: 输入消息:你好,世界
[72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33, 92]
[73, 102, 109, 109, 112, 33, 120, 112, 115, 109, 101, 34, 93]
['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0']
0 0 0 0 0 0 0 0 0 0 0 0 0
****最大的目标是遵循这一传统,即不使用内置函数,而是使用循环
在下面的代码示例中,输入字符串被转换为ASCII值列表,通过向其中添加一个值来移动这些值。然后将该值转换回字符串并放入名为
shiftedChars
的列表中。最后,这些字符串被转换成二进制运行时:
输出:
它们是二进制序列中的移位字符
Ifmmp!xpsme
编辑:
关于从字符串转换为二进制的一些额外解释。 虽然它的语法看起来非常混乱,但希望这将有助于澄清问题
因此,对于最后一种将字符转换为二进制的方法,我们需要首先获得ascii数值,然后使用
.format
进行转换现在看一下
res = "".join(f"{ord(shiftedChar):08b}")
,我们可能能够将它分成更小的部分,并发现一些代码可能是不必要的让我们看一个较小的示例:
如您所见,
format
方法接受ascii值之外的第二个参数。这用于告诉如何格式化最终结果。二进制有不同的形式,比如没有前导0的二进制或以0b
开头的序列。对空字符串使用.join
似乎主要是为了将其保持为字符串。希望这能解释发生了什么相关问题 更多 >
编程相关推荐