目录
1、chr函数:
1-1、Python:
1-2、VBA:
2、相关文章:
个人主页:非风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函数之旅-bytes()函数
2-2、Python-VBA函数之旅-callable()函数
2-3、Python-VBA函数之旅-classmethod()函数
2-4、Python-VBA函数之旅-compile()函数
Python算法之旅:Algorithm文章来源:https://www.toymoban.com/news/detail-852500.html
Python函数之旅:Functions 文章来源地址https://www.toymoban.com/news/detail-852500.html
个人主页:非风V非雨-CSDN博客
到了这里,关于Python-VBA函数之旅-chr函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!