小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

網際校驗和(InternetChecksum)算法(C )

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多