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
24/08/2020
Download da Extensão Web Essentials para Visual Studio 2019 e Vídeo Aula da Instalação
Download do Visual Studio Community 2019 e Vídeo Aula #01 da Instalação
20/03/2020
Não foi possível criar o aplicativo para o simulador. Erro ao iniciar o aplicativo no iPhone ** BUILD FAILED **
05/12/2019
Calcular Idade C# (CSharp), diferença anos entre duas datas
04/12/2019
Classe com Métodos de extensão C# (CSharp)
Métodos de extensão C#
26/09/2019
Formatando datas SqlServer
25/09/2019
Quando utilizar NOLOCK e READPAST no SqlServer.
24/09/2019
O que é Camel Case e Pascal Case ?
11/12/2018
Diferença entre parâmetros REF e OUT em C#(CSharp)
Todas as postagens...