目录
个人主页:非风V非雨-CSDN博客
chr函数在Python编程中有多种应用场景,它主要用于将Unicode码点转换为对应的字符。常见的应用场景有:
1、字符(串)处理:chr函数可以将Unicode编码转换为对应的字符,可以用于处理字符串中的特殊字符或者进行字符替换操作。
2、加密解密:在一些加密算法中,字符的转换和替换是常见的操作,chr函数可以用于将数字编码转换为对应的字符,从而实现加密和解密的功能。
3、字符编码转换:在处理文本文件或者网络传输时,经常需要进行字符编码的转换,chr函数可以将Unicode编码转换为对应的字符,方便进行字符编码的转换操作。
4、图形界面开发:在图形界面开发中,有时需要根据用户输入的字符来进行相应的操作或者显示,chr函数可以将Unicode编码转换为对应的字符,方便进行图形界面的开发。
5、配合ord函数使用:chr()函数经常与ord()函数一起使用,以实现字符和Unicode码点之间的双向转换,这在处理需要精确控制字符编码的场景时非常有用。
6、生成控制字符:控制字符如换行符(`\n`)、制表符(`\t`)等,在Python中通常使用转义序列来表示。但你也可以使用chr()函数和相应的Unicode码点来生成这些字符。
7、创建自定义异常:在创建自定义异常时,chr()也很有用。您可以使用chr()生成一个Unicode字符,作为异常名称的一部分,使异常更加描述性和可读性。
总之,chr()函数是Python中处理字符串和Unicode字符的强大工具,在许多不同的情况下都有实际应用。
1、chr函数:
1-1、Python:
- # 1.函数:chr
- # 2.功能:将整型参数值转换为对应的Unicode字符
- # 3.语法:chr(i)
- # 4.参数:i可以是十进制或十六进制形式的数字:
- # 4-1、十进制形式:i的取值范围为[0, 1114111]
- # 4-2、十六进制形式:i的取值范围为[0, 0x10ffff]
- # 5.返回值:返回Unicode码位为整数i对应的字符,例如,chr(97)返回字符串'a',chr(65)返回字符串'A',与ord()函数相反
- # 6.说明:
- # 6-1、如果参数i的值超出取值范围,则会抛出ValueError错误:
- # ValueError: chr() arg not in range(0x110000)
- # print(chr(1114112))
- # 7.示例:
- # 应用1:字符(串)处理
- # 将ASCII码列表转换为字符列表
- ascii_codes = [65, 66, 67]
- chars = [chr(code) for code in ascii_codes]
- print(chars)
- # ['A', 'B', 'C']
- # 将字符串中的每个字符转换为对应的ASCII码列表
- s = "Myelsa"
- ascii_codes = [ord(char) for char in s]
- print(ascii_codes)
- # [77, 121, 101, 108, 115, 97]
- # 生成常见的特殊符号
- # 生成制表符(Tab)
- tab_char = chr(9)
- print(tab_char)
- # 生成换行符(Newline)
- newline_char = chr(10)
- print(newline_char)
- # 生成回车符(Carriage Return)
- carriage_return_char = chr(13)
- print(carriage_return_char)
- # 生成空格
- space_char = chr(32)
- print(space_char)
- # 生成扩展ASCII码中的特殊符号
- # 生成货币符号(例如美元符号)
- dollar_sign = chr(36)
- print(dollar_sign)
- # 生成版权符号
- copyright_symbol = chr(169)
- print(copyright_symbol)
- # 生成注册商标符号
- registered_symbol = chr(174)
- print(registered_symbol)
- # 生成商标符号
- trademark_symbol = chr(8482)
- print(trademark_symbol)
- # $
- # ©
- # ®
- # ™
- # 生成Unicode特殊符号
- # 生成笑脸符号
- smiley_face = chr(0x1F604)
- print(smiley_face)
- # 生成爱心符号
- heart_symbol = chr(0x2665)
- print(heart_symbol)
- # ?
- # ♥
-
- # 应用2:加密解密
- def encrypt(text, shift):
- """
- 加密函数,将文本中的每个字符通过ASCII码偏移进行加密。
- :param text: 要加密的文本
- :param shift: 偏移量
- :return: 加密后的文本
- """
- encrypted_text = ""
- for char in text:
- # 将字符转换为ASCII码
- ascii_code = ord(char)
- # 对ASCII码进行偏移
- shifted_code = (ascii_code + shift) % 256 # 取模保证结果在ASCII码范围内
- # 将偏移后的ASCII码转换回字符
- encrypted_char = chr(shifted_code)
- encrypted_text += encrypted_char
- return encrypted_text
- def decrypt(encrypted_text, shift):
- """
- 解密函数,将加密后的文本通过ASCII码偏移进行解密。
- :param encrypted_text: 加密后的文本
- :param shift: 偏移量(应与加密时使用的偏移量相同,但方向相反)
- :return: 解密后的文本
- """
- decrypted_text = ""
- for char in encrypted_text:
- # 将字符转换为ASCII码
- ascii_code = ord(char)
- # 对ASCII码进行反向偏移
- reversed_shift = -shift
- shifted_back_code = (ascii_code + reversed_shift) % 256 # 取模保证结果在ASCII码范围内
- # 将偏移回的ASCII码转换回字符
- decrypted_char = chr(shifted_back_code)
- decrypted_text += decrypted_char
- return decrypted_text
- # 主函数
- if __name__ == '__main__':
- original_text = "Hello, Python!"
- shift = 8 # 偏移量,可以根据需要调整
- # 加密文本
- encrypted = encrypt(original_text, shift)
- print(f"加密文本: {encrypted}")
- # 解密文本
- decrypted = decrypt(encrypted, shift)
- print(f"解密文本: {decrypted}")
- # 加密文本: Pmttw4(X|pwv)
- # 解密文本: Hello, Python!
-
- # 应用3:字符编码转换
- # 将ASCII码转换为字符
- # ASCII码列表
- ascii_codes = [65, 66, 67, 32, 49, 50, 51] # 对应 'A', 'B', 'C', ' ', '1', '2', '3'
- # 使用chr()函数将ASCII码转换为字符
- chars = [chr(code) for code in ascii_codes]
- # 输出字符列表
- print(''.join(chars))
- # ABC 123
- # 将Unicode码点转换为字符(用于非ASCII字符)
- # Unicode 码点列表(包括非ASCII字符)
- unicode_codes = [0x4F60, 0x597D, 0x1F604] # 对应 '你', '好', '?'
- # 使用chr()函数将Unicode码点转换为字符
- chars = [chr(code) for code in unicode_codes]
- # 输出字符列表
- print(''.join(chars)) # 输出: 你好? (注意:这需要在支持Unicode的环境中才能正确显示)
- # 你好?
- # 从二进制数据转换到字符(假设数据是ASCII编码的)
- # 二进制数据(ASCII编码)
- binary_data = [100, 101, 108, 108, 111] # 对应 'd', 'e', 'l', 'l', 'o'
- # 使用chr()函数将二进制数据转换为字符
- chars = [chr(byte) for byte in binary_data]
- # 输出字符串
- print(''.join(chars))
- # dello
- # 从十六进制字符串转换到字符(假设数据是ASCII编码的)
- # 十六进制字符串表示的ASCII码
- hex_string = '48 65 6c 6c 6f' # 对应 'H', 'e', 'l', 'l', 'o'
- # 将十六进制字符串分割并转换为整数,然后使用chr()转换为字符
- chars = [chr(int(hex_byte, 16)) for hex_byte in hex_string.split()]
- # 输出字符串
- print(''.join(chars))
- # Hello
-
- # 应用4:图形界面开发
- import tkinter as tk
- def on_enter_pressed():
- # 获取输入框中的ASCII码
- ascii_code = entry.get()
- try:
- # 将ASCII码转换为字符
- character = chr(int(ascii_code))
- # 显示字符
- result_label.config(text=f"字符: {character}")
- except ValueError:
- # 如果输入的不是有效的整数,显示错误消息
- result_label.config(text="Error: 请输入一个有效的ASCII码!")
- # 主函数
- if __name__ == '__main__':
- # 创建主窗口
- root = tk.Tk()
- root.title("ASCII码到字符转换器")
- # 创建标签用于显示提示信息
- prompt_label = tk.Label(root, text="请输入一个ASCII码:")
- prompt_label.pack()
- # 创建输入框用于输入ASCII码
- entry = tk.Entry(root)
- entry.pack()
- # 创建按钮,点击时调用on_enter_pressed函数
- enter_button = tk.Button(root, text="输入", command=on_enter_pressed)
- enter_button.pack()
- # 创建标签用于显示结果
- result_label = tk.Label(root, text="")
- result_label.pack()
- # 运行主循环
- root.mainloop()
-
- # 应用5:配合ord函数使用
- # 定义一个字符
- character = 'A'
- # 使用ord()函数将字符转换为 ASCII 码
- ascii_code = ord(character)
- print(f"The ASCII code for '{character}' is: {ascii_code}")
- # 使用chr()函数将ASCII码转换回字符
- recovered_character = chr(ascii_code)
- print(f"The character for ASCII code {ascii_code} is: '{recovered_character}'")
- # 验证转换是否正确
- assert recovered_character == character, "The character was not recovered correctly!"
- print("The character was recovered correctly!")
- # The ASCII code for 'A' is: 65
- # The character for ASCII code 65 is: 'A'
- # The character was recovered correctly!
-
- # 应用6:生成控制字符
- # 定义一些控制字符的ASCII码
- newline_code = ord('\n') # 换行符
- tab_code = ord('\t') # 制表符
- carriage_return_code = ord('\r') # 回车符
- # 使用chr()函数生成控制字符
- newline_char = chr(newline_code)
- tab_char = chr(tab_code)
- carriage_return_char = chr(carriage_return_code)
- # 创建一个包含控制字符的字符串
- control_string = f"Hello{tab_char}World{newline_char}This is a new line{carriage_return_char}Going back to the start"
- # 打印控制字符串
- print(control_string)
- # 如果你在支持这些控制字符的环境中运行此代码(如命令行或终端).
- # 你将看到"Hello"和"World"之间有一个制表符的间隔,
- # "World"和"This is a new line"之间有一个换行符,
- # 以及"Going back to the start"将会从行的开始处打印,因为有一个回车符。
- # Hello World
- # Going back to the start
-
- # 应用7:创建自定义异常
- class InvalidCharacterException(Exception):
- """自定义异常类,用于处理无效的字符异常"""
- def __init__(self, ascii_code):
- # 使用chr()函数将ASCII码转换为字符,并构造异常消息
- character = chr(ascii_code) if 0 <= ascii_code <= 127 else '?'
- self.message = f"无效的字符,其ASCII码为: {ascii_code} ({character})"
- super().__init__(self.message)
- # 主函数
- if __name__ == '__main__':
- try:
- # 假设我们有一个无效的 ASCII 码
- invalid_ascii_code = 128
- raise InvalidCharacterException(invalid_ascii_code)
- except InvalidCharacterException as e:
- print(f"捕捉到异常: {e}")
- # 捕捉到异常: 无效的字符,其ASCII码为: 128 (?)
1-2、VBA:
- ' 1.函数:Chr
- ' 2.功能:将一个ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)值转换为对应的字符
- ' 3.语法:Chr(number)
- ' 4.参数:number,必需参数,表示要转换的ASCII值。这个值应该是一个介于0到255之间的整数
- ' 5.返回值:返回与number参数对应的字符
- ' 6.说明:
- ' 7.示例:
- '---------------------------------------------------------------------------------------------------------------------------
- Rem 模拟Python中chr函数应用1:字符(串)处理
- ' 将ASCII码列表转换为字符列表
- Sub TestRun_1()
- Dim ascii_codes() As Variant
- Dim chars() As Variant
- Dim i As Integer
-
- ascii_codes = Array(65, 66, 67)
- ReDim chars(LBound(ascii_codes) To UBound(ascii_codes))
- For i = LBound(ascii_codes) To UBound(ascii_codes)
- chars(i) = Chr(ascii_codes(i))
- Next i
- ' 显示字符列表
- Dim charResult As String
- charResult = Join(chars, ", ")
- MsgBox charResult, vbInformation, "信息提醒"
- End Sub
- ' 将字符串中的每个字符转换为对应的ASCII码列表
- Sub TestRun_2()
- Dim s As String
- Dim ascii_codes() As Variant
- Dim i As Integer
- Dim char As String
-
- ' 定义字符串
- s = "Myelsa"
- ' 初始化ASCII码数组大小
- ReDim ascii_codes(Len(s))
- ' 遍历字符串中的每个字符
- For i = 1 To Len(s)
- char = mid(s, i, 1) ' 获取第i个字符
- ascii_codes(i - 1) = Asc(char) ' 获取字符的ASCII码并存储在数组中
- Next i
- ' 输出ASCII码
- For i = 0 To UBound(ascii_codes)
- Debug.Print ascii_codes(i)
- Next i
- End Sub
- ' 其他特殊字符处理
- Sub TestRun_3()
- ' 生成制表符(Tab)
- Dim tab_char As String
- tab_char = Chr(9)
- Debug.Print tab_char
- ' 或者使用MsgBox显示制表符
- ' MsgBox tab_char
-
- ' 生成换行符(Newline)
- Dim newline_char As String
- newline_char = Chr(10)
- Debug.Print newline_char
- ' MsgBox newline_char
-
- ' 生成回车符(Carriage Return)
- Dim carriage_return_char As String
- carriage_return_char = Chr(13)
- Debug.Print carriage_return_char
- ' MsgBox carriage_return_char
-
- ' 生成空格
- Dim space_char As String
- space_char = Chr(32)
- Debug.Print space_char
- ' MsgBox space_char
-
- ' 生成扩展ASCII码中的特殊符号
- ' 生成货币符号(例如美元符号)
- Dim dollar_sign As String
- dollar_sign = Chr(36)
- Debug.Print dollar_sign
- End Sub
-
- Rem 模拟Python中chr函数应用2:加密解密
- Sub EncryptText(text As String, shift As Integer)
- Dim encryptedText As String
- Dim char As String
- Dim asciiCode As Integer
- Dim shiftedCode As Integer
- Dim encryptedChar As String
-
- encryptedText = ""
- For i = 1 To Len(text)
- char = mid(text, i, 1)
- asciiCode = Asc(char)
- shiftedCode = (asciiCode + shift) Mod 256
- encryptedChar = Chr(shiftedCode)
- encryptedText = encryptedText & encryptedChar
- Next i
- ' 显示加密后的文本
- MsgBox "加密文本: " & encryptedText
- End Sub
- Rem 执行程序,功能:实现Chr函数的加密操作
- Sub TestRun_4()
- Dim originalText As String
- Dim shift As Integer
- Dim encrypted As String
- Dim decrypted As String
-
- originalText = "Hello, Python!"
- shift = 8
- ' 加密文本
- EncryptText originalText, shift
- End Sub
-
- Rem 模拟Python中chr函数应用3:字符编码转换
- ' 将ASCII码转换为字符
- Sub TestRun_5()
- Dim ascii_codes() As Variant
- Dim chars() As String
- Dim i As Integer
- Dim result As String
-
- ' 定义ASCII码列表
- ascii_codes = Array(65, 66, 67, 32, 49, 50, 51)
- ' 初始化字符数组的大小与ASCII码列表相同
- ReDim chars(LBound(ascii_codes) To UBound(ascii_codes))
- ' 使用Chr()函数将ASCII码转换为字符
- For i = LBound(ascii_codes) To UBound(ascii_codes)
- chars(i) = Chr(ascii_codes(i))
- Next i
- ' 将字符数组连接成字符串
- result = Join(chars, "")
- ' 输出字符串
- MsgBox result, vbInformation, "信息提醒"
- End Sub
- ' 从二进制数据转换到字符(假设数据是ASCII编码的)
- Sub TestRun_6()
- Dim binary_data() As Variant
- Dim chars As String
- Dim i As Integer
-
- ' 定义ASCII编码的二进制数据
- binary_data = Array(100, 101, 108, 108, 111) ' 对应 'd', 'e', 'l', 'l', 'o'
- ' 初始化结果字符串
- chars = ""
- ' 使用Chr()函数将每个ASCII编码转换为字符,并连接成字符串
- For i = LBound(binary_data) To UBound(binary_data)
- chars = chars & Chr(binary_data(i))
- Next i
- ' 输出字符串
- MsgBox chars, vbInformation, "信息提醒"
- End Sub
-
- Rem 模拟Python中chr函数应用5:配合ord函数使用
- Sub TestRun_7()
- Dim character As String
- Dim ascii_code As Integer
- Dim recovered_character As String
-
- ' 设置字符
- character = "A"
- ' 使用Asc()函数将字符转换为ASCII码
- ascii_code = Asc(character)
- ' 显示ASCII码
- MsgBox "The ASCII code for '" & character & "' is: " & ascii_code, vbInformation, "信息提醒"
- ' 使用Chr()函数将ASCII码转换回字符
- recovered_character = Chr(ascii_code)
- ' 显示转换后的字符
- MsgBox "The character for ASCII code " & ascii_code & " is: '" & recovered_character & "'", vbInformation, "信息提醒"
- ' 验证转换是否正确
- If recovered_character = character Then
- MsgBox "The character was recovered correctly!", vbInformation, "信息提醒"
- Else
- MsgBox "The character was not recovered correctly!", vbInformation, "信息提醒"
- End If
- End Sub
-
- Rem 模拟Python中chr函数应用6:生成控制字符
- Sub TestRun_8()
- Dim newline_char As String
- Dim tab_char As String
- Dim carriage_return_char As String
- Dim control_string As String
-
- ' 换行符、制表符和回车符在VBA中可以直接使用其特殊字符表示
- newline_char = Chr(10) ' 换行符,ASCII码为10
- tab_char = Chr(9) ' 制表符,ASCII码为9
- carriage_return_char = Chr(13) ' 回车符,ASCII码为13
-
- ' 创建一个包含控制字符的字符串
- control_string = "Hello" & tab_char & "World" & newline_char & _
- "This is a new line" & carriage_return_char & _
- "Going back to the start"
-
- ' 输出到立即窗口(VBA的调试输出窗口)
- Debug.Print control_string
- ' 或者输出到Excel的某个单元格(例如A1)
- Range("A1").value = control_string
- ' 使用MsgBox显示字符串(但请注意,MsgBox可能不会正确显示控制字符)
- ' MsgBox control_string, vbInformation, "Control Characters String"
- End Sub
- '
- '
- '
- '
- '
- '
- '$Hello World
- 'This is a new line
- 'Going back to the start
2、相关文章:
2-1、Python-VBA函数之旅-callable()函数
Python算法之旅:Algorithm
个人主页:非风V非雨-CSDN博客

遨游码海,我心飞扬
微信名片


评论记录:
回复评论: