C++程序  |  22行  |  616 B

// Copyright 2017 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "fxbarcode/oned/BC_OnedEANChecksum.h"

#include "core/fxcrt/fx_extension.h"

int32_t EANCalcChecksum(const ByteString& contents) {
  int32_t odd = 0;
  int32_t even = 0;
  size_t parity = 1;
  for (size_t i = contents.GetLength(); i > 0; i--) {
    if (parity % 2)
      odd += FXSYS_DecimalCharToInt(contents[i - 1]);
    else
      even += FXSYS_DecimalCharToInt(contents[i - 1]);
    parity++;
  }
  return (10 - (odd * 3 + even) % 10) % 10;
}