首页 > 解决方案 > ord() 返回常量长度的python函数

问题描述

我目前正在编写一个程序,在该程序中我需要将文本文件从 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 返回不同大小的整数,是否有另一个函数返回类似 000 的 ord(\0) 而不是 0?如果不是最好的方法是什么,因为我只能想到“丑陋”的方法。

标签: pythonascii

解决方案


看起来您只想取一个 3 位或更少位数的数字,并始终用 3 位数字格式化该数字,并以零为前缀。例如,格式500550as 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)

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


推荐阅读