evan__zhang 2009-02-05 21:58
浏览 215
已采纳

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

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

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

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

  • 写回答

2条回答 默认 最新

  • wwwghost 2009-02-06 00:22
    关注

    根据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的话,就没有问题。是不是文档说明有误?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机