Ir ao conteúdo
  • Cadastre-se

Pegando valor errado da String [C#]


Lucas.conceicao

Posts recomendados

Bom dia a todos,

estou com um probleminha e eu não sei porque está acontecendo isso.

Eu tenho uma variável chamada numBin = TextBox5.Text.Trim(), ai eu faco um laço for para passar os valores de numbin para um vetor de inteiros que eu criei.

Porém quando passa o valor ele está mandando coisa errada.

Se eu por exemplo digito 111110 aparece assim conforme comentário no código.

string numBin = textBox5.Text.Trim();
int[] check = new int[numBin.Length];
string[] armz = new string[numBin.Length];

for (i = armz.Length -1; i >= 0 ; i--)
{
check[i] = Convert.ToInt32(numBin[i]);

Console.Write(check[i]); // 0,1,1,1,1,1

Console.Write(numBin[i]);// 48,49,49,49,49,49
}

mas precisaria aparecer 0,1,1,1,1,1 no check, alguém sabe porque não está aparecendo?

Obrigado a qualquer ajuda. :)

Link para o comentário
Compartilhar em outros sites

Cara não entendi muito bem sua pergunta mas se for o que penssei presta atenção

você esta pegando o ultimo valor e colocando primeiro por isso que ele fica invertido

pra não ficar invertido você tem que começa do zero ate o ultimo valor digitado

olha o código

string numBin = textBox5.Text.Trim();

int count = texBox5.Text.Lenght;

int[] check = new int[numBin.Length];

string[] armz = new string[numBin.Length];

for (int i = 0; i <= count ; i++)

{

check = Convert.ToInt32(numBin);

Console.Write(check); // 0,1,1,1,1,1

Console.Write(numBin);// 48,49,49,49,49,49

}

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Jhone desculpe a demora,

eu acabei pegando uma conjuntivite e não deu para vir trabalhar,

mas então,

seguindo o raciocínio:

eu insiro uma sequência binária, exemplo : "11110"

o programa vai pegar essa binário e transformar em decimal,

mas, na hora de eu comparar se o X = 1 (esse 1 é p rimeiro do 11110)

ele da o valor de 1 como 49, e não como 1.

Link para o comentário
Compartilhar em outros sites

Cara esse método que você ta usando é só para inverter o binario para poder fazer a conversão; olha esse tipo de converssão


Convert.ToInt32(NumeroBinario, Base);

ex: Convert.ToInt32("01111", 2);

o resultado em decimal é 15

e outro método é

Primeiro você inverte os numero binarios:


public static string InverterString(string str){
int tamanho = str.Length;
char[] caracteres = new char[tamanho];
for (int i = 0; i < tamanho; i++){
caracteres[ i ] = str[tamanho - 1 - i];
}
return new string(caracteres);
}

agora vamos converter para decimal


public static int BinarioParaDecimal(string valorBinario)
{
int expoente = 0;
int numero;
int soma = 0;
string numeroInvertido = InverterString(valorBinario);
for(int i = 0; i < numeroInvertido.Length; i++){
//pega dígito por dígito do número digitado
numero = Convert.ToInt32(numeroInvertido.Substring(i,1));
//multiplica o dígito por 2 elevado ao expoente, e armazena o resultado em soma
soma += numero * (int)Math.Pow(2,expoente);
// incrementa o expoente
expoente++;
}
return soma;
}

caso haja alguma duvida pode pergunta se eu souber vou responder

espero que esteja resolvido ate ++

Link para o comentário
Compartilhar em outros sites

só pra constar, ao converter um CHAR para INTEIRO, ele retorna para 0 = 48, 1 = 49, 2 = 50 ...

isso é normal, cada caractere tem um valor.

faça um teste você


string s = "1";
Console.WriteLine( s[0]-48 );

o retorno será 1

uma parte livro Visual C# 2008 Passo a passo

...Nos conjuntos de caracteres frequentemente utilizado pelo sistema operacional MS Windows o codigo para o caractere '0' tem um valor inteiro 48...

isso também acontece na linguagem c/c++ e provavelmente java.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!