Ir para conteúdo

Arquivado

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

Thiago_ASP

Conversão Binário/Decimal

Recommended Posts

fala galera,

 

Ja procurei do Pai Google, e nada....

 

queria um código em C# que convertesse Binário para Decimal e Decimal para Binário.

isso é facílimo de ser feito com PHP usando:bindec e decbin ou Java usando Integer.toBinaryString(10) por exemplo.

mas não achei nada com C#...

alguém poderia me ajudar!? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

abraços

Thiago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, e nem vai achar rsrsr.

 

A representação binária de valores do tipo Decimal em .NET é complexa, um valor do tipo Decimal requer 128 bites e possui o seguinte layout:

 

1 bit (bit 127) é usado para o sinal.

7 bits (bits 126 até 120) não são usados.

8 bits (bits 119 até 112) são usados como expoênte (em inteiro).

16 bits (bits 111 até 96) também não são usados.

96 bits (bits 95 até 0) são usados como coeficiente.

 

e a única forma de obter este valores é através do metodo statico GetBits da classe Decimal que retorna um Array

contendo 4 elementos do tipo int32, o 1º, 2º e 3º elementos são usados como coeficiente (3*32 = 96bits) e o 4º onde é dada a representação (de 95 em diante, ver tabela acima).

 

Esta função que eu criei faz o que você deseja:

 

public static string DecimalToStringBites(decimal value)
		{
			int[] bts = Decimal.GetBits(value);
			return String.Format("{0}{1}{2}{3}",
				Convert.ToString(bts[3], 2).PadLeft(32, '0'),//expoente e sinal
				Convert.ToString(bts[2], 2).PadLeft(32, '0'),//
				Convert.ToString(bts[1], 2).PadLeft(32, '0'),// Coeficiente
				Convert.ToString(bts[0], 2).PadLeft(32, '0'));//
		}

Não esquecendo que, assim como no Java, C# você consegue converter números do tipo Int32 em representações binárias:

System.Int32 foo = 154;

Console.WriteLine( Convert.ToString(foo, 2) );

 

Referencias:

http://msdn2.microsoft.com/en-us/library/s...its(VS.71).aspx

http://msdn2.microsoft.com/en-us/library/system.convert.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, e nem vai achar rsrsr.

 

A representação binária de valores do tipo Decimal em .NET é complexa, um valor do tipo Decimal requer 128 bites e possui o seguinte layout:

 

1 bit (bit 127) é usado para o sinal.

7 bits (bits 126 até 120) não são usados.

8 bits (bits 119 até 112) são usados como expoênte (em inteiro).

16 bits (bits 111 até 96) também não são usados.

96 bits (bits 95 até 0) são usados como coeficiente.

 

e a única forma de obter este valores é através do metodo statico GetBits da classe Decimal que retorna um Array

contendo 4 elementos do tipo int32, o 1º, 2º e 3º elementos são usados como coeficiente (3*32 = 96bits) e o 4º onde é dada a representação (de 95 em diante, ver tabela acima).

 

Esta função que eu criei faz o que você deseja:

 

public static string DecimalToStringBites(decimal value)
		{
			int[] bts = Decimal.GetBits(value);
			return String.Format("{0}{1}{2}{3}",
				Convert.ToString(bts[3], 2).PadLeft(32, '0'),//expoente e sinal
				Convert.ToString(bts[2], 2).PadLeft(32, '0'),//
				Convert.ToString(bts[1], 2).PadLeft(32, '0'),// Coeficiente
				Convert.ToString(bts[0], 2).PadLeft(32, '0'));//
		}

Não esquecendo que, assim como no Java, C# você consegue converter números do tipo Int32 em representações binárias:

System.Int32 foo = 154;

Console.WriteLine( Convert.ToString(foo, 2) );

 

Referencias:

http://msdn2.microsoft.com/en-us/library/s...its(VS.71).aspx

http://msdn2.microsoft.com/en-us/library/system.convert.aspx

 

klaygomes, valew mesmo... dei uma alterada nesse método e funcionou blzinha pra mim, mas ainda gostaria de um outro metodo que fizesse o inverso, ou seja, de binário para decimal...

alguém pode ajudar!??

 

abraço

 

Thiago

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.