这个校验和计算是否完全防水?

sha*_*kin 0 checksum bit-manipulation

long make_checksum(const char* str)
{
  long chk=0;
  long rot=0;
  while(*str)
  {
    rot<<=9;
    rot|=(rot>>23);
    rot^=*(char*)str++;
    chk+=rot;
  }
  return chk;
}
Run Code Online (Sandbox Code Playgroud)

不防水意味着:我有可能为两个不同的琴弦获得相同的校验和.

Hen*_*rik 5

因为有更多可能的字符串而不是长值,所以肯定会有两个不同的字符串导致相同的校验和.

  • +1,也称为"鸽笼原则". (3认同)