拜请:是Ruby中的String类中的一个方法不知道是什么意思?

"now is the time".sum 结果是1408 ?
"now is the time".sum(8) 结果是128 ?

sum返回str中字符一个基本的n位校验和,这里n是可选的参数,默认是16。对str中的每一个字符的二进制值简单求和,然后用2的n次方减1求模,得到这个校验和。

哪位前辈能作出详细的解答,谢谢了!

根据ruby文档应该为:
"now is the time"的二进制值为:
6eH 6fH 77H 20H 69H 73H 20H 74H 68H 65H 20H 74H 69H 6dH 65H
简单相加为:1408
如果用2的16次方-1,即65535对它就求模得到1408.
如果用2的8次方-1,即255对它就求模得到1408-(1408/255)*255=133(与实际上ruby运行到达的值128不符。)
但是不用2的n次方不再-1的话,就没有问题。是不是文档说明有误?

PS:这是为了保证数据安全传输而采用校验和(checksum)的算法。文档里面说功能太弱,建议用其它的方式。