| // 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); |
| } |