Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 制作一个八进制到UTF-8的转换器(仅限英文字母)。什么是八进制转义字符_Python - Fatal编程技术网

Python 制作一个八进制到UTF-8的转换器(仅限英文字母)。什么是八进制转义字符

Python 制作一个八进制到UTF-8的转换器(仅限英文字母)。什么是八进制转义字符,python,Python,我正在用python做一个discord机器人(使用discord.pyAPI),并且一直在使用hex、morse和base64/32字符串,现在我正在尝试让它解码八进制字符串 我一直在做一些研究,发现这篇文章和其他类似的文章试图用一种叫做“八进制转义字符”的东西来转换非英语字符。我知道转义字符是什么,我知道八进制字符是什么,但我不知道这些转义字符是做什么的 无论如何,我只需要它来读取一个简单的八进制字符串,并将其解码为单词。没有涉及外国角色,所以我真的希望有一个更简单的方法来做到这一点 例如,

我正在用python做一个discord机器人(使用discord.pyAPI),并且一直在使用hex、morse和base64/32字符串,现在我正在尝试让它解码八进制字符串

我一直在做一些研究,发现这篇文章和其他类似的文章试图用一种叫做“八进制转义字符”的东西来转换非英语字符。我知道转义字符是什么,我知道八进制字符是什么,但我不知道这些转义字符是做什么的

无论如何,我只需要它来读取一个简单的八进制字符串,并将其解码为单词。没有涉及外国角色,所以我真的希望有一个更简单的方法来做到这一点

例如,110 145 154 154 157 40 151 156 164 145 162 156 145 164应翻译为“hello internet”

我发现其他帖子只有英文字符,但都是java的。到目前为止,我得到的是:

    #Bot is listening for message. If it finds one message which starts with !decodeoctal It'll execute the inside of the conditional (the decoder itself)
    if message.content.startswith('!decodeoctal'):

        #The content of the message is now a list inside a variable called msglist               
        msglist = message.content.split()

        #The first item of the list (the one that contains the !decodeoctal string) is discarded leaving the rest of list, that contains the octal string intact
        msglist = msglist[1:]                       
            try:    
                #Code dor decoding the string goes here                                                 
            except:                         
                msg = '''Decoding error.'''
                await client.send_message(message.channel, msg)
代码缩进了一级,因为它位于另一个if语句中。有什么想法吗?

您需要将数字转换为字符

msglist
是字符串列表,字符串值为
'110'
'145'
'154'
等等。如果要将它们输入到
chr
中,则必须根据这些值创建数字。这就是我们要做的
int
有一个基数参数,该参数必须是
8
,因为您有八进制值

values = []
for octal_string in msglist:
    number = int(octal_string, base=8)
    values.append(number)
print(''.join(chr(value) for value in values))
简短版本:

print(''.join(chr(int(octal_string, base=8)) for octal_string in msglist))

根据评论中的要求,这里有一些关于
int
的更多信息
int
将字符串转换为数字<代码>'100'和
100
是两个不同的东西。只需尝试
print(99<100)
print('99'<'100')
。使用
int
很简单:
int('100')
将为我们提供
100

但是如果
'100'
不是一个十进制数,而是一个十进制数呢
int
仍然可以进行转换,但我们必须指定基数(默认情况下为
10
)。现在我们使用
int('100',base=2)
得到
4


'100'
中,将产生十进制值
64
int('100',base=8)
),而
100
In将是十进制值
256
int('100',base=16)
)。但是你能不能再详细解释一下int部分?我不太明白,我补充了一些解释。