Gtin14 Class
Definition
- Namespace
- Bodu.IO.Hashing.CheckDigits
- Assembly
- Bodu.IO.Hashing.dll
- Package
- Bodu.IO.Hashing 1.0.0
- Source
- Gtin14.cs
Computes the check digit of a 14-digit Global Trade Item Number (GTIN-14) barcode using the GTIN-14 weighted modulus-10 algorithm. This class cannot be inherited.
public sealed class Gtin14 : CheckDigitAlgorithm
- Inheritance
-
Gtin14
- Inherited Members
- Extension Methods
Examples
// Single-call computation against the 13-digit body.
char check = Gtin14.Compute("1061414100041"); // '5'
// Full-sequence validation.
bool ok = Gtin14.IsValid("10614141000415"); // true
// Streaming use when the body is built up incrementally.
var algo = new Gtin14();
algo.Append("1061414100041");
char d = algo.GetCurrentCheckDigit(); // '5'
Remarks
GTIN-14 - the logistics-tier GS1 identifier derived by prefixing an EAN-13 with a single indicator digit - shares its weight pattern with EAN-13, UPC-A, and ISBN-13. The static helpers on this type enforce a strict 13-digit body length (14-digit full sequence); the streaming surface is length-agnostic.
Worked example. For the body "1061414100041", the computed check digit is '5', and the
resulting GTIN-14 "10614141000415" is therefore valid.
important
This algorithm is not cryptographically secure and should not be used for password hashing, digital signatures, or integrity validation in security-sensitive applications.
Constructors
Gtin14()
Initializes a new instance of the Gtin14 class.
public Gtin14()
Fields
BodyLength
The required body length of 13 decimal digits.
public const int BodyLength = 13
Field Value
SequenceLength
The required full-sequence length of 14 decimal digits.
public const int SequenceLength = 14
Field Value
Properties
AlgorithmName
Gets the canonical name of the algorithm, suitable for diagnostic output and logging.
public override string AlgorithmName { get; }
Property Value
- string
A short, stable identifier such as
"Luhn","IBAN", or"ISO 7064 MOD 97-10".
Methods
Append(ReadOnlySpan<char>)
Absorbs the supplied characters into the running check-value state.
public override void Append(ReadOnlySpan<char> body)
Parameters
bodyReadOnlySpan<char>The characters to append. Each element must belong to the algorithm's accepted input alphabet. An empty span is a permitted no-op.
Exceptions
- ArgumentOutOfRangeException
Thrown when
bodycontains any character outside the algorithm's accepted input alphabet.
Compute(ReadOnlySpan<char>)
Computes the GTIN-14 check digit for the supplied body of decimal digits without allocating a streaming instance.
public static char Compute(ReadOnlySpan<char> body)
Parameters
bodyReadOnlySpan<char>The body characters. Each must be an ASCII decimal digit (
'0'to'9').
Returns
- char
The check digit as an ASCII character in the range
'0'to'9'.
Remarks
This helper is length-tolerant to support streaming and partial-body use; IsValid(ReadOnlySpan<char>) enforces the strict SequenceLength domain contract for full validation.
Exceptions
- ArgumentOutOfRangeException
Thrown when
bodycontains any character outside the range'0'to'9'.
GetCurrentCheckDigit()
Returns the check digit computed for the body absorbed since the last Reset() (or since construction).
public override char GetCurrentCheckDigit()
Returns
- char
The check digit as an ASCII character in the range
'0'to'9'. For an empty body all built-in algorithms return'0'.
Remarks
This call is non-destructive; the running state is unaffected and the method may be invoked any number of times with identical results between appends.
IsValid(ReadOnlySpan<char>)
Determines whether the supplied sequence, comprising a thirteen-digit body followed by a trailing GTIN-14 check digit, is consistent.
public static bool IsValid(ReadOnlySpan<char> digitsIncludingCheck)
Parameters
digitsIncludingCheckReadOnlySpan<char>The complete sequence including the trailing check digit.
Returns
- bool
true if the sequence is exactly SequenceLength digits and evaluates as valid under GTIN-14; otherwise, false - including the case where
digitsIncludingCheckis empty.
Reset()
Resets the algorithm to its initial state, discarding any characters previously absorbed.
public override void Reset()
Remarks
Equivalent in behavior to constructing a fresh instance of the same concrete type.
Applies to
| Product | Versions |
|---|---|
| .NET | 8, 10 |