Cálculo de dígito verificador Módulo Base 10 e 11 em C# (CSharp)
Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 09/11/2015
Postado em : 09/11/2015
Classe para cálculo do dígito verificador Base 10 e 11
Para calcular o dígito basta chamar a função desejada :
DigitoVerificadorBase10e11.DigitoM10(valor)
ouDigitoVerificadorBase10e11.DigitoM11(valor)
Ondevalor
tem que ser um inteiro maior que zero
A função retorna um inteiro com o dígito calculado.
Se preferir no final desta postagem você encontra o link para baixar no GitHubum pequeno projeto com exemplo de uso da classe.
Crie uma classe em seu projeto com o nome de DigitoVerificadorBase10e11.cs
e cole o código abaixo.
/* * * Calculo de digito verificador Base 10 e 11, muito utilizada em calculo de digito verificador em boletos bancarios. * * by Antonio Azevedo * Visite nossa página http://www.codigoexpresso.com.br * * public static int DigitoM10(long intNumero) * Calcula o digito verificador base 10 * * public static int DigitoM11(long intNumero) * Calcula o digito verificador base 11 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; public static class DigitoVerificadorBase10e11 { /// <summary> /// Calculo de digito Modulo 10 /// </summary> /// <param name="intNumero">Informar o numero para calculo digito</param> /// <returns>Retorna o digito</returns> public static int DigitoM10(long intNumero) { int[] intPesos = { 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 }; string strText = intNumero.ToString(); if (strText.Length > 16) throw new Exception("Número não suportado pela função!"); int intSoma = 0; int intIdx = 0; for (int intPos = strText.Length - 1; intPos >= 0; intPos--) { intSoma += Convert.ToInt32(strText[intPos].ToString()) * intPesos[intIdx]; intIdx++; } intSoma = intSoma % 10; intSoma = 10 - intSoma; if (intSoma == 10) { intSoma = 0; } return intSoma; } /// <summary> /// Calculo de digito Modulo 11 /// </summary> /// <param name="intNumero">Informar o numero para calculo digito</param> /// <returns>Retorna o digito</returns> public static int DigitoM11(long intNumero) { int[] intPesos = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9 }; string strText = intNumero.ToString(); if (strText.Length > 16) throw new Exception("Número não suportado pela função!"); int intSoma = 0; int intIdx = 0; for (int intPos = strText.Length - 1; intPos >= 0; intPos--) { intSoma += Convert.ToInt32(strText[intPos].ToString()) * intPesos[intIdx]; intIdx++; } int intResto = (intSoma * 10) % 11; int intDigito = intResto; if (intDigito >= 10) intDigito = 0; return intDigito; } }
Comentários
Thomaz
em 12/11/2015 19:15:55
Gostei, estava procurando isso.
Últimas Postagens
20/12/2023
Estrangulando um monólito C#(CSharp)
17/12/2023
Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
11/12/2023
Comando nameof() C#(CSharp)
06/12/2023
Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
03/12/2023
Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
01/12/2023
Salvando CSV com cabeçalho no SQL Server Management Studio
29/11/2023
DELETE CASCADE no SqlServer
08/10/2023
Grafana Loki e .NET Framework com C#
06/10/2023
Serilog e .NET Framework com C#
27/09/2023
Arquitetura CQRS
Todas as postagens...