我正在尝试在python中为数据网络类创建一个程序,以读取包含8个字符的文件,例如00111001,并将其放入数据包中,然后转换为ASCII。我想迭代数据包,如果它是1,则根据for循环的索引在conversation_list = [128,64,32,16,8,4,2,1]中添加数字。我似乎无法进入任何我的if语句。
文件包含:0,0,1,1,1,0,0,1
这是我的输出:
Accecpable参数数量
在下一行打印文件消息
0, 0, 1, 1, 1, 0, 0, 1
00111001
['00111001']
这里
0
1
0
import sys
filename = sys.argv[1]
if len(sys.argv) == 2:
print("Accecpable number of arguments") else:
print("Wrong number of arguments")
sys.exit(1)
message_data = open(filename, "r")
message_text = message_data.read()
if len(message_text) == 0:
print("Mess has zero length, " + filename + "was empty")
print("Printing files message on next line")
print(message_text)
replace_message = message_text.replace(", ", "")
print(replace_message)
packets = []
for index in range(0, len(replace_message), 8):
substring = replace_message[index:index+8]
packets.append(substring)
print(packets)
conversion_list = [128,64,32,16,8,4,2,1] running_total = 0
for packets_index, value in enumerate(packets):
if value[packets_index] == 1:
running_total + conversion_list[packets_index]
print(conversion_list[packets_index] + " added")
if value[packets_index] == 0:
print(packets_index)
continue
print (running_total)
我能理解这个问题
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
print(decimal)
使用python内置函数转换为ASCII参考Adam这个非常简单的解决方案
将所有条目附加到列表中,同时将它们转换为迭代这是我正在寻找的解决方案。我最终绘制了一些图片并发现我需要在那里添加另一个for循环。
import sys #stores .py and file being read filename = sys.argv[1] #checks for amount of arguments if len(sys.argv) == 2: print("Accecpable number of arguments") else: print("Wrong number of arguments") sys.exit(1) #opens and reads the file message_data = open(filename, "r") #stores data into object message_text = message_data.read() #check if there is any data in the file by the length if len(message_text) == 0: print("Mess has zero length, " + filename + "was empty") print("displaying message form text:", message_text) #remove commas replace_message = message_text.replace(", ", "") print("replacing all commas: ", replace_message) packets = [] # puts message into a packet for index in range(0, len(replace_message), 8): substring = replace_message[index:index+8] packets.append(substring) print("packet has been made", packets) conversion_list = [128,64,32,16,8,4,2,1] running_total = 0 #starting at negative 1 so count starts at 0 for index count = -1 print("\n=========converting to binrary============\n") #iterate through packet element for packets_index, value in enumerate(packets): running_total = 0 for char in value : #counter for iterations count += 1 if char == "1" : #add value of conversion)list index to runnin total running_total += conversion_list[count] #show user what has been added print(conversion_list[count], "has been added") else: pass print ("total is: ", running_total) print("ASCII result for", running_total, "is the character: ", chr(running_total)) print("\n==========Data has been sent to an output file============\n") outfile = open("output_task1.txt", "w+" , encoding = "utf-8", newline ="\r\n") outfile.write(chr(running_total))
这是输出:
Accecpable参数数量
显示消息表单文本:0,0,1,1,1,0,0,1
替换所有逗号:00111001
数据包已被制作['00111001']
=========转换为二进制============
已添加32
已添加16
已添加8
已添加1
总数是:57
57的ASCII结果是字符:9
==========数据已发送到输出文件============