NumericType: Exclude<
    | `${NumericDType}${NumericEndianType}`
    | "u1"
    | "u1c"
    | "i1", `${"u1" | "u1c" | "i1"}${NumericEndianType}`>

indicates the name of a numeric type with required endian information, or the use of a variable-sized integer.
the collection of possible valid numeric types is:

  • "u1", "i1", "u2l", "u2b", "i2l", "i2b", "u4l", "u4b", "u8l", "u8b", "i4l", "i4b", "i8l", "i8b", "f4l", "f4b", "f8l", "f8b", "u1c",

the first character specifies the format:

  • u = unsigned integer
  • i = signed integer
  • f = float IEEE-754

the second character specifies the byte-size:

  • 1 = one byte
  • 2 = two bytes (short)
  • 4 = four bytes (word)
  • 8 = eight bytes (long)

the third character specifies the endianness. but in the case of unsigned one byte integers, the c character specifies if the value is clamped to 255:

  • l = little endian
  • b = big endian
  • c = clamped (only valid for "u1c" type)

for variable byte sized numbers, use VarNumericType.