fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. constexpr unsigned long COLLAPSE_INT64(unsigned long x)
  6. { return x + (x >> 8) + (x >> 16) + (x >> 24) + (x >> 32) + (x >> 40) + (x >> 48) + (x >> 56); }
  7.  
  8. static unsigned calc_chksum(const char *from, const size_t sz, const unsigned offset=0, const int len=-1)
  9. {
  10.  
  11. const unsigned long OVERFLOW_MASK (1UL << 8 | 1UL << 16 | 1UL << 24 | 1UL << 32 | 1UL << 40 | 1UL << 48 | 1UL << 56);
  12. unsigned long ret{}, overflow{};
  13. from += offset;
  14. const unsigned long elen (len != -1 ? len : sz);
  15. size_t ii{};
  16. for (; ii < (elen - elen % 8); ii += 8)
  17. {
  18. unsigned long expected_overflow((ret & OVERFLOW_MASK) ^ (OVERFLOW_MASK & *reinterpret_cast<const unsigned long*>(from + ii)));
  19. ret += *reinterpret_cast<const unsigned long*>(from + ii);
  20. overflow += (expected_overflow ^ ret) & OVERFLOW_MASK;
  21. }
  22. ret = COLLAPSE_INT64(ret);
  23. overflow = COLLAPSE_INT64(overflow);
  24. for (; ii < elen; ret += from[ii++]); // add up rest one by one
  25. return (ret - overflow) & 0xff;
  26. }
  27.  
  28.  
  29. unsigned calc_chksum_native(const char *from, const size_t sz, const unsigned offset=0, const int len=-1) {
  30. // native chksum algorithm
  31. unsigned val(0);
  32. const char *eptr(from + (len != -1 ? len + offset : sz - offset));
  33. for (const char *ptr(from + offset); ptr < eptr; val += *ptr++);
  34. return val % 256;
  35. }
  36.  
  37. int main() {
  38. std::string data ="8=XXXXXXXX9=XXXXX35=X34=XXXXX49=XXXXX52=XXXXXXXXXXXXXXXXXXXXX56=XXXXXXXXXXXXXXXXXX320=XXXXXXXXXXX560=X146=XX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXX460=X541=XXXXXXXX969=X996=XXXX1199=XXXX1200=XXXX1482=XXX711=X311=XXXXXX313=XXXXXX457=X458=XXXXX459=X887=X888=XXXXXX889=XXXXXXXXXXX870=X871=XXX872=X871=XXX872=XX871=XXX872=XXX871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXX460=X541=XXXXXXXX969=X996=XXXX1199=XXXX1200=XXXX1482=XXX711=X311=XXXXXX313=XXXXXX457=X458=XXXXX459=X887=X888=XXXXXX889=XXXXXXXXXXX870=X871=XXX872=X871=XXX872=XX871=XXX872=XXX871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXX460=X541=XXXXXXXX969=X996=XXXX1199=XXXX1200=XXXX1482=XXX711=X311=XXXXXX313=XXXXXX457=X458=XXXXX459=X887=X888=XXXXXX889=XXXXXXXXXXX870=X871=XXX872=X871=XXX872=XX871=XXX872=XXX871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=X871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXXX313=XXXXXX457=X458=XXXXXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XXXX871=XXX872=X871=XXX872=XX871=XXX872=XXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XXXX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXX313=XXXXXX457=X458=XXXX459=X887=X888=XXXXXX889=XXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=X871=XXX872=XXX871=XXX872=X871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX55=XXXXXXXXXXXXXXXXXXXXXX15=XXX22=X48=XXXXXXXXXXXXXXXXXXXXXXXXX107=XXXXXXXXXXXXXXXXXXXXXXXXX167=XXX202=XX460=X541=XXXXXXXX969=XXXX996=XXXX1199=XXX1200=X1482=X711=X311=XXXXXX313=XXXXXX457=X458=XXXXX459=X887=X888=XXXXXX889=XXXXXXXXXXX870=X871=XXX872=X871=XXX872=X871=XXX872=XX871=XXX872=X871=XXX872=X871=XXX872=XX871=XXX872=XXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX871=XXX872=XXXXXXXXXXXXXXXXXXXXX10=XXX";
  39.  
  40. std::cout << " native: " << calc_chksum_native(data.c_str(), data.size());
  41. std::cout << " steroid: " << calc_chksum(data.c_str(), data.size());
  42. return 0;
  43. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
 native: 152 steroid: 146