我当前正在编写一个程序,在该程序中,我需要将文本文件从ascii转换为整数,并在执行一些操作后转换回去。但是问题是ord()可以返回1到3位数之间的任何数字,如果它可以返回标准位数,那将非常好。由于我的程序目前是
def convert_message_number2ascii(mystring):
newstring = ""
print("number:")
for i in range(0,len(mystring),2):
print("mystring[i:i+2]:"+mystring[i:i+2])
newstring = newstring + str(chr(int(mystring[i:i+2])))
print(newstring)
return newstring
def convert_message_ascii2number(mystring):
newstring = ""
print("ascii:")
for i in range(0,len(mystring)):
newstring = newstring + str(ord(mystring[i]))
print(newstring)
return newstring
但是这不起作用,因为正如我所说的ord返回不同大小的整数,是否还有另一个函数为ord(\ 0)而不是0返回000?否则,什么是最好的方法,因为我只能想到“丑陋”的方法。
答案 0 :(得分:1)
您可以使用字符串格式来实现此目的:
def convert_message_ascii2number(mystring):
newstring = ""
print("ascii:")
for i in range(0,len(mystring)):
newstring = newstring + "%03d" % ord(mystring[i])
print(newstring)
return newstring
答案 1 :(得分:1)
您似乎只想输入一个3位数或更少位数的数字,并始终用3位数格式化该数字的格式,并以0开头。例如,将5
的格式设置为005
,将50
的格式设置为050
。
您可以使用str.format
方法执行此操作。
例如:
number = 5
"{:03}".format(number) # note: the 3 means use 3 digits
返回
"005"
在上下文中:
for i in range(0,len(mystring)):
char_code = ord(mystring[i])
formatted_char_code = "{:03}".format(char_code)
newstring = newstring + str(formatted_char_code)
print(newstring)
但是,如果可以的话,也许可以考虑将所有这些字符代码存储在列表中,而不是一个大字符串。