def string_to_score(string, ignore_case=False):
    # 用户可以通过参数来决定是否以大小写无关的方式建立前缀索引。
    if ignore_case:                        
        string = string.lower()            

    # 将字符串的前 6 个字符转换为相应的数字值，
    # 比如把空字符转换为 0 、制表符（tab）转换为 9 、大写 A 转换为 65 ，
    # 诸如此类。
    pieces = map(ord, string[:6])          
    # 为长度不足 6 个字符的字符串添加占位符，以此来表示这是一个短字符。
    while len(pieces) < 6:                 
        pieces.append(-1)                  

    score = 0
    # 对字符串进行转换得出的每个值都会被计算到分值里面，
    # 并且程序处理空字符的方式和处理占位符的方式并不相同。
    for piece in pieces:                    
        score = score * 257 + piece + 1    

    # 通过多使用一个二进制位，
    # 程序可以表明字符串是否正好为 6 个字符长，
    # 这样它就可以正确地区分出 “robber” 和 “robbers” ，
    # 尽管这对于区分 “robbers” 和 “robbery” 并无帮助。
    return score * 2 + (len(string) > 6)    
# <end id="string-to-score"/>
dataset/ETHPy150Open huangz1990/riacn-code/ch07_listing_source.py/string_to_score/original