---
title: SAIF.Framework.BaseN operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF DocGen
last_reviewed: 2026-07-30
library: SAIF.Framework.BaseN
reference_type: package
---

# SAIF.Framework.BaseN operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Decode BaseN string to decimal](operations/decode-basen-string-to-decimal.md) | Reads a BaseN character sequence and resolves it to its decimal value. | Caller invokes `BaseNToDecimal` on a string. | Source string, `IConverter` | Decimal `Long` | [BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16), [BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-004](business-rules.md#br-004-non-numeric-input-to-the-default-alpha-to-numeric-conversion-is-treated-as-zero) | — | — |
| [Encode decimal to BaseN string](operations/encode-decimal-to-basen-string.md) | Renders a decimal value as a BaseN string in the caller's chosen base. | Caller invokes `DecimalToBaseN` on an `Integer` or `Long`. | Decimal `Integer` or `Long`, `IConverter` | BaseN string | [BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16), [BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-003](business-rules.md#br-003-excel-style-base-26-conversion-is-bijective-no-zero-digit) | — | — |
| [Format digit array as BaseN string](operations/format-digit-array-as-basen-string.md) | Assembles a digit array into the converter's final string output, applying Excel-specific rollover where needed. | Encode flow or direct `IConverter.FormatBaseN` call. | Integer digit array | Formatted BaseN string | [BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16), [BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-003](business-rules.md#br-003-excel-style-base-26-conversion-is-bijective-no-zero-digit) | — | — |
| [Convert alpha digit to numeric value](operations/convert-alpha-digit-to-numeric-value.md) | Resolves a single character token to the numeric digit value the active converter expects. | Decode flow, encode re-tokenization, or direct `IConverter` call. | Single-character string token | Integer digit value | [BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16), [BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-004](business-rules.md#br-004-non-numeric-input-to-the-default-alpha-to-numeric-conversion-is-treated-as-zero) | — | — |
| [Convert numeric digit to alpha representation](operations/convert-numeric-digit-to-alpha-representation.md) | Resolves one numeric digit to the string token the active converter renders. | Encode recursion, formatting flow, or direct `IConverter` call. | Integer digit value | String token | [BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16), [BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-003](business-rules.md#br-003-excel-style-base-26-conversion-is-bijective-no-zero-digit) | — | — |

## Process flow diagram
The following diagram visualizes the primary operational flow across operations, showing how decoding and encoding each delegate to the shared digit-conversion operations.

```mermaid
flowchart TD
	Start([Caller requests conversion]) --> Decision{Decode or encode?}
	Decision -->|Decode| Decode[Decode BaseN string to decimal]
	Decode --> Alpha[Convert alpha digit to numeric value]
	Alpha --> Sum[Accumulate positional decimal value]
	Sum --> EndDecode([Return decimal result])
	Decision -->|Encode| Encode[Encode decimal to BaseN string]
	Encode --> Numeric[Convert numeric digit to alpha representation]
	Numeric --> Format[Format digit array as BaseN string]
	Format --> EndEncode([Return BaseN string])
```

## Failure and edge-case behavior
- `BaseNToDecimal` consumes the input string one character at a time and never strips delimiters or groups multi-character segments first, so any pre-formatted or delimited BaseN string must be normalized by the caller before decoding.
- `ConverterBase.ConvertAlphaToNumeric` silently returns `0` for non-numeric input rather than failing. Because `BinaryConverter` and `OctalConverter` inherit this default without overriding it, they treat invalid characters as zero-valued digits instead of rejecting them ([BR-004](business-rules.md#br-004-non-numeric-input-to-the-default-alpha-to-numeric-conversion-is-treated-as-zero)).
- `HexConverter` raises `ConverterException` for any alphabetic character outside `A`-`F` or any numeric value greater than `16`, so malformed hex input fails fast rather than producing a partial result ([BR-001](business-rules.md#br-001-hexadecimal-digit-must-not-exceed-base-16)).
- `ExcelConverter` raises `ConverterException` when a mapped character or numeric digit exceeds `26`. Where a digit does resolve successfully, its formatter still rewrites any `0` digit through borrow/rollover logic before the string is emitted, preserving the bijective A-Z, AA-style output ([BR-002](business-rules.md#br-002-excel-base-26-digit-must-not-exceed-base-26), [BR-003](business-rules.md#br-003-excel-style-base-26-conversion-is-bijective-no-zero-digit)).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Framework.BaseN\BaseNConverter.vb`
- `SAIF.Framework.BaseN\ConverterBase.vb`
- `SAIF.Framework.BaseN\BinaryConverter.vb`
- `SAIF.Framework.BaseN\OctalConverter.vb`
- `SAIF.Framework.BaseN\HexConverter.vb`
- `SAIF.Framework.BaseN\ExcelConverter.vb`
- `SAIF.Framework.BaseN\IConverter.vb`
- `SAIF.Framework.BaseN\ConverterException.vb`
