校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段。其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的。

使用python计算校验和时记住做截断就可以了。 这里仅仅是作为一个代码样本,权作标记,直接上代码

简单说明一下上面的脚本。如果是当作无符号整数来计算,则算法要简单很多,实际上都可以缩减为一句代码的事。如果是当作带符号整数来计算,则算法要复杂一下,要处理各种上溢出和下溢出的情形。正如文章开头指出的,不论使用哪种方式,最后的二进制表示都是一样的。所以一般情况下可以使用无符号整数来计算校验和,简单快速。

下面是验证使用的例子,

  1. data1=bytes(b'\x01\x7F\xFF')
  2. data2=bytes([random.randrange(0,256) for i in range(0, 10000)])
  3. assert(uchar_checksum(data1) == 127)
  4. assert(char_checksum(data1) == 127)
  5. assert((uchar_checksum(data2)&0xFF) == (char_checksum(data2)&0xFF))
  6. print('OK')

上面的算法也很容易推广到两个字节或者四个字节的校验和计算

over

最新文章

  1. PHP的变量
  2. 使用rem来开发你的移动端网站
  3. 阅读 图解HTTP ,读书笔记
  4. SharePoint 2013 点击"关注" 报错
  5. TS
  6. Mac 终端常用命令备忘
  7. java.sql.SQLException: Access denied for user 'root'
  8. Ubuntu 14.04数据库服务器--mysql的安装和配置
  9. 几本不错的开源书(to be continued)
  10. SQL Server 数据岸问题
  11. poj 2001 Shortest Prefixes(字典树)
  12. DEBUG 调试
  13. 整合改造百度编译器到thinkphp上传图片到OSS
  14. 初探storm
  15. 求逆序对 ----归并排 & 树状数组
  16. Substr与mb_substr区别
  17. 《Practical Vim》第五章:命令行模式
  18. CocosCreator 场景转换API
  19. Tomcat 7.0安装与配置
  20. Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]

热门文章

  1. mybatis-generator eclipse插件 使用方法
  2. nodejs的express框架
  3. Linux audit安全审计工具
  4. [error]OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize, file modules/imgproc/src/resize.cpp, line 3289
  5. 【letcode】5-LongestPalindromicSubstring
  6. pytorch实现autoencoder
  7. 直接复制浏览器Request headers中的进行copyheaders进行转换
  8. JSON JAVA 总结
  9. group_concat的使用以及乱码
  10. macbook air 获取root权限