首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA函数之旅-ascii函数

  • 25-03-03 04:23
  • 2502
  • 10070
blog.csdn.net

目录

1、ascii函数:

1-1、Python:

1-2、VBA:

2、相关文章:

个人主页:非风V非雨-CSDN博客

        ascii函数在Python中主要用于将对象(特别是字符和字符串)转换为它们的ASCII表示形式。这种转换在处理文本数据、调试代码以及确保文本以 ASCII 格式存储或传输时非常有用。常见应用场景有:

1、调试和文本处理:当处理包含非ASCII字符(如Unicode字符)的文本时,ascii()函数可以帮助你查看这些字符的ASCII表示形式。这对于识别和理解文本中的特殊字符或不可见字符(如控制字符)特别有用。

2、代码示例和文档:在编写代码示例或文档时,有时需要展示一个字符或字符串的ASCII表示。使用ascii()函数可以方便地生成这种表示,而无需手动编写转义序列。

3、数据清洗和规范化:在处理文本数据时,有时候需要将非ASCII字符替换为对应的ASCII字符,以便进行数据清洗和规范化。ascii()函数可以帮助我们实现这一目标,使得数据更易于处理和分析。

4、文本过滤和清理:如果你需要从文本中删除或替换非ASCII字符,可以使用ascii()函数结合其他字符串处理方法来实现。例如,你可以使用正则表达式结合ascii()函数来识别并处理非ASCII字符。

5、跨平台兼容性:在某些情况下,你可能需要确保文本数据在不同的平台或环境中都能正确解析。使用ascii()函数可以帮助你确保文本数据以兼容的方式表示,特别是在处理可能包含平台特定字符或编码的文本时。

6. 加密和解密:ASCII函数在某些简单的加密和解密算法中有所应用。通过将字符转换为ASCII码值,然后对这些值进行某种形式的变换(如位移、替换等),可以实现简单的加密。解密过程则是加密的逆操作,通过相同的变换将ASCII码值转换回字符。

7、网络编程:在编写涉及网络通信的代码时,有时需要确保发送或接收的数据只包含ASCII字符,因为某些协议或系统可能只支持ASCII字符集。在这种情况下,你可以使用ascii()函数来转换或验证数据。

        需要注意的是,ascii()函数主要用于获取对象的ASCII表示形式,而不是用于编码或解码文本数据。如果你需要将文本数据编码为ASCII格式并处理非ASCII字符(如替换或忽略它们),应该使用字符串的".encode()"方法,并指定适当的错误处理策略(如"ignore" 或 "replace")。

        此外,对于大多数现代应用来说,使用Unicode(通常是UTF-8编码)来处理文本数据更为常见和推荐,因为它支持更广泛的字符集和跨平台兼容性。但在某些特定场景下,ascii()函数仍然是一个有用的工具。

1、ascii函数:
1-1、Python:
  1. # 1.函数:ascii
  2. # 2.功能:将一个对象转换为其可打印的ASCII表示形式
  3. # 3.语法:ascii(object)
  4. # 4.参数:Python中主要的内置对象类型,包括但不限于以下类型:
  5. # 4-1、 数字类型:
  6. # - `int`(整型):用于表示整数,如 `1`, `100`, `-8080` 等
  7. # - `float`(浮点型):用于表示浮点数,即带小数点的数字,如 `1.23`, `0.0`, `-99.9` 等
  8. # - `complex`(复数型):用于表示复数,如 `3+6j`
  9. # 4-2、 序列类型:
  10. # - `list`(列表):有序的元素集合,元素之间用逗号分隔,整个列表由方括号包围。例如:`[1, 2, 3, 'a', 'b', 'c']`
  11. # - `tuple`(元组):与列表类似,但元素不能修改。例如:`(1, 2, 3)`
  12. # - `str`(字符串):字符序列。例如:`"Hello, world!"`
  13. # - `bytes`:字节序列,常用于处理二进制数据
  14. # - `bytearray`:可变字节序列
  15. # 4-3、 集合类型:
  16. # - `set`(集合):无序且不包含重复元素的集合。例如:`{1, 2, 3}`
  17. # - `frozenset`(冻结集合):不可变的集合,与set类似,但内容不能修改
  18. # 4-4、 映射类型:
  19. # - `dict`(字典):无序的键值对集合。例如:`{'name': 'myelsa', 'age': 43}`
  20. # 4-5、布尔类型:
  21. # - `bool`:布尔值,只有两个值 `True` 和 `False`
  22. # 4-6、 特殊类型:
  23. # - `NoneType`:只有一个值 `None`,表示空或无值的状态
  24. # - `ellipsis`:表示省略号对象,通常用三个点 `...` 表示
  25. # - `notimplemented`:一个特殊的单例值,当对象不支持某个操作时返回此值
  26. # 4-7、其他类型:
  27. # - `type`:用于表示类型对象本身
  28. # - `range`:表示一个不可变的数字序列范围
  29. # - `memoryview`:内存中的字节序列的“窗口”或“视图”
  30. # - `slice`:表示切片对象,用于在序列类型上切片
  31. # - `enum.Enum`(通过`enum`模块):枚举类型,表示一组具名的常量
  32. # - `functions`、`methods`、`class objects`、`instances` 等:函数、方法、类对象、实例对象等
  33. # - `module`:模块对象
  34. # - `file`:文件对象
  35. # - `traceback`、`frame` 和 `code` 对象:用于表示调用栈、帧和代码对象
  36. # 5.返回值:返回一个表示该对象的字符串,这个字符串包含对象的可打印ASCII字符的表示形式
  37. # 6.说明:
  38. # 6-1、使用ascii()函数时,要注意它只返回对象的可打印ASCII字符表示形式,并且不是所有对象都有有意义的ASCII表示
  39. # 6-2、ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)
  40. # 7.示例:
  41. # 应用1:调试和文本处理
  42. def custom_ascii(s):
  43. # 将字符串转换为ASCII表示形式
  44. ascii_repr = ascii(s)
  45. # 添加调试信息
  46. debug_info = f"String length: {len(s)} \nASCII representation:{ascii_repr}"
  47. # 返回ASCII表示形式和调试信息
  48. return debug_info
  49. # 主函数
  50. if __name__ == '__main__':
  51. text = "人生苦短, 我用python!"
  52. ascii_debug_info = custom_ascii(text)
  53. print(ascii_debug_info)
  54. # String length: 15
  55. # ASCII representation:'\u4eba\u751f\u82e6\u77ed, \u6211\u7528python!'
  56. # 应用2:代码示例和文档
  57. def formatted_ascii(obj):
  58. """
  59. 返回对象的格式化ASCII表示形式,以便用于代码示例和文档。
  60. 参数:
  61. obj(any): 要转换的对象。
  62. 返回:
  63. str: 对象的格式化ASCII表示形式的字符串。
  64. """
  65. ascii_repr = ascii(obj)
  66. # 格式化ASCII字符串,比如添加换行符以便阅读
  67. formatted_repr = ascii_repr.replace("'", "").replace(",", ",\n ").strip()
  68. return formatted_repr
  69. # 主函数
  70. if __name__ == '__main__':
  71. example_list = [1, 2, 3, 'a', 'b', 'c']
  72. example_dict = {'name': 'myelsa', 'age': 43}
  73. # 使用formatted_ascii函数展示列表的ASCII表示
  74. print("列表的ASCII表示:")
  75. print(formatted_ascii(example_list))
  76. # 使用formatted_ascii函数展示字典的ASCII表示
  77. print("\n字典的ASCII表示:")
  78. print(formatted_ascii(example_dict))
  79. # 列表的ASCII表示:
  80. # [1,
  81. # 2,
  82. # 3,
  83. # a,
  84. # b,
  85. # c]
  86. #
  87. # 字典的ASCII表示:
  88. # {name: myelsa,
  89. # age: 43}
  90. # 应用3:数据清洗和规范化
  91. def custom_ascii(s, keep_ascii_only=False):
  92. # 如果keep_ascii_only为True,则只保留ASCII字符
  93. if keep_ascii_only:
  94. s = ''.join(c for c in s if ord(c) < 128)
  95. # 将字符串转换为ASCII表示形式
  96. ascii_repr = ascii(s)
  97. # 添加调试信息
  98. debug_info = f"Original string: {s} \nASCII-only string: {s if not keep_ascii_only else ''} \nASCII representation:{ascii_repr}"
  99. # 返回ASCII表示形式和调试信息
  100. return debug_info
  101. # 主函数
  102. if __name__ == '__main__':
  103. # 保留ASCII字符
  104. text_with_non_ascii = "人生苦短, 我用python!"
  105. ascii_debug_info_keep_ascii = custom_ascii(text_with_non_ascii, keep_ascii_only=True)
  106. print(ascii_debug_info_keep_ascii)
  107. # Original string: , python!
  108. # ASCII-only string:
  109. # ASCII representation:', python!'
  110. # 应用4:加密和解密
  111. def encrypt_with_ascii(plaintext, offset):
  112. """
  113. 使用ASCII值和给定的偏移量加密明文。
  114. 参数:
  115. plaintext(str): 要加密的明文。
  116. offset(int): 应用于每个字符ASCII值的偏移量。
  117. 返回:
  118. str: 加密后的密文。
  119. """
  120. # 初始化空字符串来保存加密后的字符
  121. ciphertext = ""
  122. # 遍历明文中的每个字符
  123. for char in plaintext:
  124. # 获取字符的ASCII值
  125. ascii_value = ord(char)
  126. # 应用偏移量
  127. encrypted_ascii_value = (ascii_value + offset) % 256 # 使用模运算来确保值在0-255之间
  128. # 将加密后的ASCII值转换回字符
  129. encrypted_char = chr(encrypted_ascii_value)
  130. # 将加密后的字符添加到密文字符串中
  131. ciphertext += encrypted_char
  132. return ciphertext
  133. # 主函数
  134. if __name__ == '__main__':
  135. plaintext = "Hello,Python!"
  136. offset = 43 # 可以选择任何整数作为偏移量
  137. # 加密明文
  138. encrypted_text = encrypt_with_ascii(plaintext, offset)
  139. print(f"加密后的文本: {encrypted_text}")
  140. # 解密密文需要知道相同的偏移量
  141. def decrypt_with_ascii(ciphertext, offset):
  142. """
  143. 使用相同的ASCII值和偏移量解密密文。
  144. 参数:
  145. ciphertext(str): 要解密的密文。
  146. offset(int): 用于加密的相同偏移量。
  147. 返回:
  148. str: 解密后的明文。
  149. """
  150. # 初始化空字符串来保存解密后的字符
  151. plaintext = ""
  152. # 遍历密文中的每个字符
  153. for char in ciphertext:
  154. # 获取字符的ASCII值
  155. ascii_value = ord(char)
  156. # 应用相反的偏移量来解密
  157. decrypted_ascii_value = (ascii_value - offset) % 256
  158. # 将解密后的ASCII值转换回字符
  159. decrypted_char = chr(decrypted_ascii_value)
  160. # 将解密后的字符添加到明文字符串中
  161. plaintext += decrypted_char
  162. return plaintext
  163. # 主函数
  164. if __name__ =='__main__':
  165. # 解密密文
  166. decrypted_text = decrypt_with_ascii(encrypted_text, offset)
  167. print(f"解密后的文本: {decrypted_text}")
  168. # 加密后的文本: sW{¤L
  169. # 解密后的文本: Hello,Python!
  170. # 应用5:网络编程
  171. def encode_to_ascii(data):
  172. """
  173. 将字符串编码为ASCII字节流。
  174. 参数:
  175. data(str): 要编码的字符串。
  176. 返回:
  177. bytes: 编码后的ASCII字节流。
  178. """
  179. # 使用'ascii'编码将字符串转换为字节流
  180. ascii_bytes = data.encode('ascii')
  181. return ascii_bytes
  182. # 主函数
  183. if __name__ == '__main__':
  184. text_to_send = "Hello, Python!"
  185. encoded_text = encode_to_ascii(text_to_send)
  186. print(f"Encoded text: {encoded_text}")
  187. def decode_from_ascii(data):
  188. """
  189. 将ASCII字节流解码为字符串。
  190. 参数:
  191. data(bytes): 要解码的ASCII字节流。
  192. 返回:
  193. str: 解码后的字符串。
  194. """
  195. # 使用'ascii'编码将字节流解码为字符串
  196. ascii_str = data.decode('ascii')
  197. return ascii_str
  198. # 主函数
  199. if __name__ == '__main__':
  200. received_data = b'Hello, Python!'
  201. decoded_text = decode_from_ascii(received_data)
  202. print(f"Decoded text: {decoded_text}")
  203. import socket
  204. def start_server():
  205. server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  206. server_socket.bind(('localhost', 10248))
  207. server_socket.listen(1)
  208. print("Server started, listening on port 10248...")
  209. while True:
  210. client_socket, client_address = server_socket.accept()
  211. print(f"Connection from {client_address}")
  212. # 接收数据
  213. received_data = client_socket.recv(1024)
  214. decoded_text = decode_from_ascii(received_data)
  215. print(f"Received: {decoded_text}")
  216. # 发送响应
  217. response = "Message received!"
  218. encoded_response = encode_to_ascii(response)
  219. client_socket.sendall(encoded_response)
  220. client_socket.close()
  221. # 主函数
  222. if __name__ == "__main__":
  223. start_server()
  224. def start_client():
  225. client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  226. client_socket.connect(('localhost', 10248))
  227. # 发送数据
  228. message = "Hello from client!"
  229. encoded_message = encode_to_ascii(message)
  230. client_socket.sendall(encoded_message)
  231. # 接收响应
  232. response_data = client_socket.recv(1024)
  233. decoded_response = decode_from_ascii(response_data)
  234. print(f"Received response: {decoded_response}")
  235. client_socket.close()
  236. # 主函数
  237. if __name__ == "__main__":
  238. start_client()
  239. # Encoded text: b'Hello, Python!'
  240. # Decoded text: Hello, Python!
  241. # Server started, listening on port 10248...
1-2、VBA:
  1. ' 1.函数:Asc
  2. ' 2.功能:提取字符串中第一个字符的ASCII编码值
  3. ' 3.语法:Asc(string)
  4. ' 4.参数:
  5. ' 4-1、 string是必需的参数,表示要返回其ASCII值的字符或字符串表达式
  6. ' 4-2、 如果string包含多个字符,Asc函数仅返回第一个字符的ASCII值
  7. ' 5.返回值:一个整数,表示字符串中第一个字符的ASCII值.
  8. ' 6.说明:
  9. ' 6-1、如果字符串为空(""),则Asc函数返回0
  10. ' 6-2、Asc函数只能正确处理单字节字符集,如ANSI或默认的Windows代码页。对于双字节字符集(如Unicode),Asc函数可能无法正确返回预期的值,因为它只处理字符串的第一个字节
  11. ' 7.示例:
  12. '-----------------------------------------------------------------------------------------------------------------------------------------------------------------
  13. Rem 模拟Python中ascii函数应用1:调试和文本处理
  14. Function CustomAscii_1(s As String) As String
  15. Dim ascii_repr As String
  16. Dim debug_info As String
  17. Dim i As Integer
  18. ' 初始化调试信息
  19. debug_info = "String length: " & Len(s) & vbCrLf & "ASCII representation: "
  20. ' 遍历字符串的每个字符
  21. For i = 1 To Len(s)
  22. ' 获取字符的ASCII值,并添加到ascii_repr中
  23. ascii_repr = ascii_repr & vbCrLf & "Char: " & mid(s, i, 1) & " -> ASCII: " & Asc(mid(s, i, 1)) & vbCrLf
  24. Next i
  25. ' 拼接调试信息和ASCII表示形式
  26. CustomAscii_1 = debug_info & ascii_repr
  27. End Function
  28. Rem 执行程序,功能:调用自定义函数CustomAscii_1,实现文本信息处理
  29. Sub TestRun_1()
  30. Dim text As String
  31. Dim ascii_debug_info As String
  32. ' 输入的字符串
  33. text = "人生苦短,我用Python!"
  34. ' 调用CustomAscii函数
  35. ascii_debug_info = CustomAscii_1(text)
  36. ' 显示结果
  37. MsgBox ascii_debug_info, vbInformation, "文本处理"
  38. End Sub
  39. Rem 模拟Python中ascii函数应用2:数据清洗和规范化
  40. Function CustomAscii_2(s As String, keepAsciiOnly As Boolean) As String
  41. Dim originalString As String
  42. Dim asciiOnlyString As String
  43. Dim asciiRepr As String
  44. Dim debugInfo As String
  45. Dim i As Integer
  46. Dim c As String
  47. ' 保存原始字符串
  48. originalString = s
  49. ' 如果 keepAsciiOnly 为 True,则只保留 ASCII 字符
  50. If keepAsciiOnly Then
  51. asciiOnlyString = ""
  52. For i = 1 To Len(s)
  53. c = mid(s, i, 1)
  54. If AscW(c) < 128 Then
  55. asciiOnlyString = asciiOnlyString & c
  56. End If
  57. Next i
  58. Else
  59. asciiOnlyString = originalString
  60. End If
  61. ' VBA 没有内置的 ascii 函数来将整个字符串转换为 ASCII 表示形式
  62. ' 但我们可以手动构建一个字符串,将非 ASCII 字符替换为转义序列
  63. asciiRepr = ""
  64. For i = 1 To Len(originalString)
  65. c = mid(originalString, i, 1)
  66. If AscW(c) < 128 Then
  67. asciiRepr = asciiRepr & c
  68. Else
  69. ' 使用 VBA 的 ChrW 和 AscW 函数转换非 ASCII 字符为转义序列
  70. asciiRepr = asciiRepr & "\u" & Format(AscW(c), "X4")
  71. End If
  72. Next i
  73. ' 添加调试信息
  74. debugInfo = "Original string: " & originalString & vbCrLf & _
  75. "ASCII-only string: " & asciiOnlyString & vbCrLf & _
  76. "ASCII representation: " & asciiRepr
  77. ' 返回调试信息
  78. CustomAscii_2 = debugInfo
  79. End Function
  80. Rem 执行程序,功能:调用自定义函数CustomAscii_2,在立即窗口中输出结果
  81. Sub TestRun_2()
  82. Dim textWithNonAscii As String
  83. Dim asciiDebugInfoKeepAscii As String
  84. ' 示例文本包含非 ASCII 字符
  85. textWithNonAscii = "人生短暂,我用Python!" ' “苦”字的编码值超出127的范围,故将原来的“苦短”调整为“短暂”
  86. ' 调用 CustomAscii 函数,并保留 ASCII 字符
  87. asciiDebugInfoKeepAscii = CustomAscii_2(textWithNonAscii, True)
  88. ' 输出结果
  89. Debug.Print asciiDebugInfoKeepAscii
  90. End Sub
  91. 'Original string: 人生短暂,我用Python!
  92. 'ASCII-only string: ,Python!
  93. 'ASCII representation: \uX4\uX4\uX4\uX4,\uX4\uX4Python!
  94. Rem 模拟Python中ascii函数应用3:加密和解密
  95. Rem 加密函数,功能:将明文按照指定的偏移量加密为密文
  96. Function EncryptWithAscii(plaintext As String, offset As Integer) As String
  97. Dim ciphertext As String ' 初始化用于存储加密后文本的变量
  98. Dim char As String ' 用于临时存储每个字符的变量
  99. Dim asciiValue As Integer ' 用于存储字符的ASCII值的变量
  100. Dim encryptedAsciiValue As Integer ' 用于存储加密后的ASCII值的变量
  101. ciphertext = "" ' 初始化密文为空字符串
  102. ' 遍历明文中的每个字符
  103. For i = 1 To Len(plaintext)
  104. ' 提取明文中的第i个字符
  105. char = mid(plaintext, i, 1)
  106. ' 获取字符的Unicode(ASCII)值
  107. asciiValue = AscW(char)
  108. ' 将字符的ASCII值加上偏移量,并取模256以确保结果在0-255范围内
  109. encryptedAsciiValue = (asciiValue + offset) Mod 256
  110. ' 将加密后的ASCII值转换回字符
  111. encryptedChar = ChrW(encryptedAsciiValue)
  112. ' 将加密后的字符追加到密文字符串中
  113. ciphertext = ciphertext & encryptedChar
  114. Next i
  115. ' 返回加密后的密文
  116. EncryptWithAscii = ciphertext
  117. End Function
  118. Rem 解密函数,功能:将密文按照相同的偏移量解密为明文
  119. Function DecryptWithAscii(ciphertext As String, offset As Integer) As String
  120. Dim plaintext As String ' 初始化用于存储解密后文本的变量
  121. Dim char As String ' 用于临时存储每个字符的变量
  122. Dim asciiValue As Integer ' 用于存储字符的ASCII值的变量
  123. Dim decryptedAsciiValue As Integer ' 用于存储解密后的ASCII值的变量
  124. plaintext = "" ' 初始化明文为空字符串
  125. ' 遍历密文中的每个字符
  126. For i = 1 To Len(ciphertext)
  127. ' 提取密文中的第i个字符
  128. char = mid(ciphertext, i, 1)
  129. ' 获取字符的Unicode(ASCII)值
  130. asciiValue = AscW(char)
  131. ' 将字符的ASCII值减去偏移量,加上256确保结果为正数,然后取模256
  132. decryptedAsciiValue = (asciiValue - offset + 256) Mod 256
  133. ' 将解密后的ASCII值转换回字符
  134. decryptedChar = ChrW(decryptedAsciiValue)
  135. ' 将解密后的字符追加到明文字符串中
  136. plaintext = plaintext & decryptedChar
  137. Next i
  138. ' 返回解密后的明文
  139. DecryptWithAscii = plaintext
  140. End Function
  141. Rem 执行过程,功能:用于展示加密和解密的流程
  142. Sub TestRun_3()
  143. Dim plaintext As String ' 初始化明文变量
  144. Dim offset As Integer ' 初始化偏移量变量
  145. Dim encryptedText As String ' 初始化加密后的文本变量
  146. Dim decryptedText As String ' 初始化解密后的文本变量
  147. plaintext = "Hello,Python!" '设置密文内容
  148. offset = 43 ' 设置偏移量
  149. ' 调用加密函数加密明文
  150. encryptedText = EncryptWithAscii(plaintext, offset)
  151. ' 输出加密后的文本
  152. Debug.Print "加密后的文本: " & encryptedText
  153. ' 调用解密函数解密密文
  154. decryptedText = DecryptWithAscii(encryptedText, offset)
  155. ' 输出解密后的文本
  156. Debug.Print "解密后的文本: " & decryptedText
  157. End Sub
  158. '加密后的文本: s????W{¤????L
  159. '解密后的文本: Hello , Python!

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行对应的Sub程序即可输出结果。 

2、相关文章:

2-1、Python-VBA函数之旅-all()函数 

2-2、Python-VBA函数之旅-any()函数 

2-3、Python-VBA函数之旅-bin()函数 

2-4、Python-VBA函数之旅-bool()函数 

Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客

Python函数之旅:Myelsa的Python函数之旅(高铁直达)

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/137534146"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top