Usuário com melhor resposta
Juntar dois dados hexadecimais e formar um

Pergunta
-
Boa noite tenho uma aplicacao que recebo dados em hex e junto dois dados para formar um até ai tudo ok o problema ocorr quando os dados dado[1] é igual 0x01 e o segundo dado[2] e igual a 0x01 ,02,03 o problema é o zero na frete por exemplo quando o dado 01 09 teria que aparecer 265 em decimal mas aparece 25.segue parte codigo anexo.
string x, y;
int a, b, resultado;
x = String.Format("{0:d3}", ((int)txtDecoder[4]));
y = String.Format("{0:d3}", ((int)txtDecoder[5]));
a = Convert.ToInt32(x);
b = Convert.ToInt32(y);
resultado = Convert.ToInt32(string.Format("{0}{1}", a, b));
string hexString = resultado.ToString();
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);//Valor em decimal
textBox1.Text = num.ToString();
Respostas
-
O problema é maior o codigo parece estar certo so que da erro segue o codigo.
os dados que recebo sao em caracteres entao converto para hexa depois junto eles e converto para decimal e apresento em um textbox.
duas linhas que nao podem sair do programa
x = String.Format("{0:x}", ((int)txtDecoder[4]));//Converte para hexaDecimal
y = String.Format("{0:x}", ((int)txtDecoder[5]));//Converte para hexaDecimal
string x, y;
int resultado;
x = String.Format("{0:x}", ((int)txtDecoder[4]));//Converte para hexaDecimal
y = String.Format("{0:x}", ((int)txtDecoder[5]));//Converte para hexaDecimal
resultado = Convert.ToInt32(string.Format("{0}{1}", x, y));//Junta os valores EX:0x01 0x03 =0x0103
string hexString = resultado.ToString();//Converte para string
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);//Valor em decimal
textBox1.Text = num.ToString();
- Marcado como Resposta Felipezip terça-feira, 10 de maio de 2016 23:51
Todas as Respostas
-
Olá Filipez,
Neste caso você tem que receber uma string para concatenar tipo você passa :
resultado = string.Format("{0}{1}", x, y);
Já que é string x y.
não precisa converter x e y, no seu caso você esta convertendo para inteiro.
Veja uma implementação que fiz.
String a, b,hexConcat; Console.WriteLine("ztDigite o valor de 'a': "); a = Console.ReadLine(); Console.WriteLine("ztDigite o valor de 'b': "); b = Console.ReadLine(); hexConcat = string.Format("{0}{1}", a, b); int num = Int32.Parse(hexConcat, System.Globalization.NumberStyles.HexNumber); Console.WriteLine(num);
At. te. Manoel Neto.
- Editado Manoel Neto MSYS terça-feira, 10 de maio de 2016 01:36
-
-
Acho que vocês não tão entendendo direito o código a principio ta certo só que quando os dados primeiro dado é 01 e segundo tem um zero na frente tipo 09 teria que ficar assim 0x0109 convertendo para decimal 265 mas acontece isso so quando tem o zero no segundo valor ele junta 0x019 que é 25 em decimal,como resolver isso.
-
Agora sim Felipe eu entendi, o compilador está retirando o 0 do segundo dado, certo?
O problema é que você está convertendo para inteiros, então ele retira o 0, é nulo, esqueceu?
Trabalhe com strings, segue o exemplo:
string x, y, resultado;
x = String.Format("{0:d3}", textBox1.Text);
y = String.Format("{0:d3}", textBox2.Text);
resultado = string.Format("{0}{1}", x, y);
int num = Int32.Parse(resultado, System.Globalization.NumberStyles.HexNumber);//Valor em decimal
MessageBox.Show(num.ToString());
- Editado Lailson Conceição terça-feira, 10 de maio de 2016 03:12
- Marcado como Resposta Marcos SJ terça-feira, 10 de maio de 2016 13:18
- Não Marcado como Resposta Felipezip terça-feira, 10 de maio de 2016 23:31
-
O problema é maior o codigo parece estar certo so que da erro segue o codigo.
os dados que recebo sao em caracteres entao converto para hexa depois junto eles e converto para decimal e apresento em um textbox.
duas linhas que nao podem sair do programa
x = String.Format("{0:x}", ((int)txtDecoder[4]));//Converte para hexaDecimal
y = String.Format("{0:x}", ((int)txtDecoder[5]));//Converte para hexaDecimal
string x, y;
int resultado;
x = String.Format("{0:x}", ((int)txtDecoder[4]));//Converte para hexaDecimal
y = String.Format("{0:x}", ((int)txtDecoder[5]));//Converte para hexaDecimal
resultado = Convert.ToInt32(string.Format("{0}{1}", x, y));//Junta os valores EX:0x01 0x03 =0x0103
string hexString = resultado.ToString();//Converte para string
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);//Valor em decimal
textBox1.Text = num.ToString();
- Marcado como Resposta Felipezip terça-feira, 10 de maio de 2016 23:51
-
-
Olá Filipez,
A linha 7 esta convertendo para int esta linha aqui: resultado = string.Format("{0}{1}", x, y);
Já que é string x y.
não precisa converter x e y, no seu caso você esta convertendo para inteiro.
Veja uma implementação que fiz.
String a, b,hexConcat; Console.WriteLine("ztDigite o valor de 'a': "); a = Console.ReadLine(); Console.WriteLine("ztDigite o valor de 'b': "); b = Console.ReadLine(); hexConcat = string.Format("{0}{1}", a, b); int num = Int32.Parse(hexConcat, System.Globalization.NumberStyles.HexNumber); Console.WriteLine(num);
At. te. Manoel Neto.
- Editado Manoel Neto MSYS quarta-feira, 11 de maio de 2016 00:18