ord()返回约束长度的Python函数

时间:2019-04-19 23:47:39

标签: python ascii

我当前正在编写一个程序,在该程序中,我需要将文本文件从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?否则,什么是最好的方法,因为我只能想到“丑陋”的方法。

2 个答案:

答案 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)

但是,如果可以的话,也许可以考虑将所有这些字符代码存储在列表中,而不是一个大字符串。