blob: 46f3ae60f0cb54470d2017cd17ed90dbe4c008a5 [file] [log] [blame]
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
int fletcher16(List<int> data) {
int c0;
int c1;
int index = data.length;
for (c0 = c1 = 0; index >= 5802; index -= 5802) {
for (int i = 0; i < 5802; ++i) {
c0 = c0 + data[index - i - 1];
c1 = c1 + c0;
}
c0 = c0 % 255;
c1 = c1 % 255;
}
for (int i = 0; i < index; ++i) {
c0 = c0 + data[i];
c1 = c1 + c0;
}
c0 = c0 % 255;
c1 = c1 % 255;
return (c1 << 8 | c0);
}