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