枚举变量
base = 36 tmin = 1 tmax = 26(阈值) skew = 38 damp = 70 initial_bias = 72 initial_n =128(0x80 ) delimiter = 0x2d(分隔符 -)
basic (cp) 判断是不是基本字符,即ASCII以内字符
delim(cp) 判断是不是 “-”符号
decode_digit(cp)将punycode 36进制数转换成整数
encode_digit (d,flag) 将字符转换成 0..25代表字面,26..35表示数字
maxint = -1
adapt (delta,numpoints,firsttime) delta 是增量,numpoints是当前所有已编码的码位数量
可变长整数:
传统的可变长整数,如,100,2983等等等,但是,这些可变长整数一旦连接在一起,1002983,则不能知道两个整数的界限了,于是,要构造一个新的可变长整数格式:
每一位有一个阈值,t(j)
恰好只有一个权重最大的digit_j<t(j),从而可以区分各个数。
如,734251….. 对应的阈值为,2,3,5,5,5,5….
因为7>2,3=3,2<5,所以,2就是那个权重最大的digit,因此,734是一个数,类推,只,251是一个数。
这里,可以将734,251理解成punycode编码后的值,只需要将其解码:各位数,乘以各自权重求和,就可以得到对应的Unicode,从而得到对应的汉子。