将单词转换成unicode

2024-09-29 06:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

谁能给我解释一下这段代码吗?我不太明白。在

  1. 为什么我需要声明uniMessage = ""它在这里有什么用途?有时当我编码时,我意识到我需要事先声明,但有时我不需要。

  2. 为什么我需要使用+=并将用户输入的单词转换成str+=不是像unicode = unicode + str(ord(char))?我看不到+=的影响,为什么我不能只用=。如果我认为用户输入的消息已经是一个字符串了?为什么要再次将其转换为str

  3. {cd9}不是也要转换成整数吗?在

    message = input("Enter a word ")
    
    uniMessage = ""
    for char in message:
        uniMessage += str(ord(char))
    print("Unicode message:", uniMessage)
    
    convMessage = ""
    for i in range(0, len(uniMessage)-1, 2):
        alphabet = uniMessage[i] + uniMessage[i+1]
        convMessage += chr(int(alphabet))
    print("Orginal message:", convMessage)
    

Tags: 代码用户in声明messageforunicode用途
2条回答

重要说明

代码不是真正的Unicode编码/解码,因为假设您将输入的Unicode字符只有两个十进制数字。如果您输入def作为输入,这些字符有100、101和102 ASCII码,您可以自己测试。在

(1)uniMessage = ""需要,因为您是第一次将它用作赋值运算符的右部分。在

uniMessage += str(ord(char))

相当于:

^{pr2}$

在Python中,在使用变量之前需要声明变量,=运算符首先计算正确的运算符。在

(2)+=只是语法糖,所以是的,你可以使用=,但有些人会说这是不太Python和“更难”阅读;)我建议你在可以的时候使用+=。您必须使用str转换为字符串,因为在使用ord将用户输入转换为数字之前。ord

(3)是必需的,因为uniMessage是一个字符串,一个充满数字字符的字符串,但仍然是一个字符串。在

该代码可能打算将字符转换为其内部数字表示形式,然后再转换回字符串。但是对于低于换行符(通常为0x0A=10dec)和高于“c”(0x63=99dec)的8位编码字符,该代码会失败。 此外,在Python中,每个字符串都是一个使用UTF-8编码的Unicode字符串。使用其他编码是可能的(str.encode()),但是,将产生“字节”

相关问题 更多 >