日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

網(wǎng)際校驗(yàn)和(InternetChecksum)算法(C )

 閑來看看 2013-01-25
/*
  pBuffer是要校驗(yàn)的數(shù)據(jù)報(bào)開始地址
  nSize指定校驗(yàn)內(nèi)容長度,單位是字節(jié)
  */
  unsigned short checksum_calculating(unsigned short *pBuffer, int nSize)
  {
  unsigned long dwCksum = 0; // 32位累加和
  unsigned char* p=(unsigned char*)&dwCksum;
  // 以兩字節(jié)為單位反復(fù)累加
  while(nSize > 1)
  {
  dwCksum += *pBuffer++;
  printf("\t\t%.2x %.2x %.2x %.2x\n",*p,*(p+1),*(p+2),*(p+3));
  nSize -= sizeof(unsigned short);
  }
  printf("\t\t%.2x %.2x %.2x %.2x\n",*p,*(p+1),*(p+2),*(p+3));
  // 如果總字節(jié)數(shù)為奇數(shù)則加上最后一個(gè)字節(jié)
  if (nSize)
  {
  dwCksum += *(unsigned char*) pBuffer;
  printf("\t\t%.2x %.2x %.2x %.2x\n",*p,*(p+1),*(p+2),*(p+3));
  }
  //把32位整數(shù)高位中的進(jìn)位累加到低16位
  while(dwCksum>>16){
  dwCksum = (dwCksum&0xffff) + (dwCksum>>16);
  printf("\t\t%.2x %.2x %.2x %.2x\n",*p,*(p+1),*(p+2),*(p+3));
  }
  //取反得到校驗(yàn)和
  dwCksum = ~dwCksum;
  printf("\t\t%.2x %.2x %.2x %.2x\n",*p,*(p+1),*(p+2),*(p+3));
  // 返回16位校驗(yàn)和
  return (unsigned short) (dwCksum);
  } 來源:教育聯(lián)展網(wǎng)-軟件水平考試

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多