字符实战——字符串转换工具——字符码转换

未匹配的标注

关于转换的主题,还可能将单个字符传入内置的 ord 函数,将其转换为基础整数码(比如,其 ASCII 字节值)—— 这返回了真正的用来在内存中代表对应字符的二进制值。chr 函数执行反向操作,将整数码转为对应的字符:

>>> ord('s')
115
>>> chr(115)
's'

技术上讲,这两个函数使得字符和它们的 Unicode 序数或” 码点 “(只是它们在基础字符集中的识别号)相互转换。对于 ASCII 文本,这是熟悉的能容纳在内存单个字节中的 7 比特数字,但其它种类的 Unicode 文本的码点范围可能更宽广(关于字符集和 Unicode 的更多知识见第 37 章)。如果需要可使用循环来将这些函数应用到字符串中的所有字符上。这些工具还可以用来执行一种基于字符串的数学。比如,要前进到下一个字符,转换并计算整数:

>>> S = '5'
>>> S = chr(ord(S) + 1)
>>> S
'6'
>>> S = chr(ord(S) + 1)
>>> S
'7'

至少对单字符的字符串,这提供了使用内置 int 函数来将字符串转为整数的一种替代方法(然而这方法只在按照代码期待的顺序,对项排序的字符集中才有意义!):

>>> int('5')
5
>>> ord('5') - ord('0')
5

这些转换能和循环语句(在第 4 章中介绍并在本书下一部分中深度讲述)一起结合使用,来将一个二进制数字的字符串转换为它们对应的整数值。每次循环时,将当前值乘 2 再加上下一个数字符号的整数值:

>>> B = '1101' # 使用 ord 将二进制数字转换为整数
>>> I = 0
>>> while B != '':
... I = I * 2 + (ord(B[0]) - ord('0'))
... B = B[1:]
...
>>> I
13

译注:这是一种将二进制数字转换为整数的常用方法,另一种方法是加权求和法。

往左移位的操作(I << 1)会和这里的乘以 2 有相同的效果。然而,将把这个修改作为建议的练习,既因为还没有详细学习循环,还因为在第 5 章中碰到的 intbin 内置函数为我们处理了二进制转换任务(从 Python 2.6 和 3.0 开始):

>>> int('1101', 2) # 二进制转为整数:内置函数
13
>>> bin(13) # 整数转为二进制:内置函数
'0b1101'

假以时日,Python 往往会自动化最常见的任务!

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~