Codificación Base-N de una matriz de bytes

Hace un par de días me encontréeste CodeReview Para la Base-36 que codifica una matriz de bytes. Sin embargo, las respuestas que siguieron no tocaron la decodificación en una matriz de bytes, o posiblemente reutilizaron la respuesta para realizar codificaciones de diferentes bases (radix).

La respuesta para la pregunta vinculada utiliza BigInteger. En lo que respecta a la implementación, la base y sus dígitos podrían ser parametrizados.

Sin embargo, el problema con BigInteger es que estamos tratando nuestra entrada como un entero asumido. Sin embargo, nuestra entrada, una matriz de bytes, es solo una serie de valores opacos.

Si la matriz de bytes termina en una serie de cero bytes, por ejemplo, {0xFF, 0x7F, 0x00,0x00}, esos bytes se perderán al usar el algoritmo en la respuesta (solo codificaría {0xFF, 0x7F).Si el último byte que no es cero tiene el bit de signo establecido, el byte cero de continuación se consume, ya que se trata como el delimitador de signo de BigInt. Entonces {0xFF, 0xFF, 0x00,0x00} se codificaría solo como {0xFF, 0xFF, 0x00}.

¿Cómo podría un programador .NET usar BigInteger para crear un codificador razonablemente eficiente y sin radios, con soporte de decodificación, más la capacidad de manejar la endiancia, y con la capacidad de "evitar" los bytes cero finales que se están perdiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta