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

未匹配的标注

关于转换的主题,还可能将单个字符传入内置的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
发起讨论 只看当前版本


暂无话题~