方法在工程中的位置
这一小节需要结合前面的基于PyQt开发的脚本集合包(二)内容来看,在那一篇文章中,我们讲到,我们讲主界面,功能UI界面,以及实现功能本身的方法分别放在了不同的地方以方便我们维护,此方法属于功能的实现,因此与其它脚本功能一同放在了tools
目录下,如果要调用该功能,则需要使用import
导入模块。
代码解释
convertor模块中并没有类,只有一个方法,即convertor
方法,它接受一个字符串参数,并将字符串进行编码,处理成UTF-8格式,输出十六进制数以及十六进制数的个数
|
|
以下逐行解释代码:
- 初始化
res
字符串变量, - 获取传入的参数
s
字符串的长度,并传给strlen
- for循环遍历字符串中的每一个字符
s[i].encode("UTF-8")
将字符编码为UTF-8字节串for byte in ...
是一个生成器表达式,它遍历编码后的字节串,每个byte
表示UTF-8编码中的每一个字节f'{byte:02x}'
将每个字节转换为两位的十六进制字符串,0表示如果十六进制不足两位,则以0补足,2表示宽度位两位,x表示以十六进制格式输出,比如:如果byte
的值为255,则会生成’ff’,如果byte
的值为7,则会生成'07'''.join(...)
,join
方法将生成器表达式的所有结果连成一个字符串,即格式化操作,例如:一个字符编码为b'\xe4\xb8\xad'
,经过格式化后将变成'e4b8ad'
upper
方法将输出的字符串中所有小写转换成大写- 又一个
join
方法,将hexstr
一个字符一个字符拆开,每个两个字符中间便加入, 0x
,经过上一个join
方法,这次经过格式化操作后,e4b8ad
将会变成E4, 0xB8, 0xAD, 0x
- 在字符串最前面加上
0x
,变成:0xE4, 0xB8, 0xAD, 0x
- 删除最后3个字符(-1是最后一个,-2是倒数第二个,但是
[]
读内容的规则:前面读,后面不读,也就是虽然是最后一位是倒数第二,但实际上倒数第二不读,只读到倒数第三) - 打印
res
结果 - 返回结果以及
0x
的计数(通过计算0x
来计算有多少个十六进制数)
本文要点
- 本文中展示了,方法在工程中的位置,以及如何在工作区UI对象中导入该模块
- 详细解释了convertor方法如何实现字符串转UTF-8格式
- 其中有许多用法值得我们详细学习,比如
join
方法的使用,f'{byte:02x}'
将每个字节转换成十六进制数,upper
方法的使用,[]
的读取范围的规则等