Velocity Reviews > Java > Binary to Hexadecimal Conversion

lei
Guest
Posts: n/a

 12-30-2006
are few errors which are new to me. Please check it out. Thanks!

<code>

import java.lang.*;
import java.io.*;

class BinaryDecoder{
public static void main(String args[]) throws IOException{
System.out.print("Enter a number in binary: ");

int decimal=0;
for(int counter=input.length()-1; counter>=0; counter--){
if(input.charAt(counter)=='1'){
int exp=input.length()-1-counter;
decimal+=Math.pow(2,exp);
}
}

int powerOfTen=1;
int number=decimal;
int counter=0;
int[] hex = new int[20];

while(number>0){
int remainder=number%16;
hex[counter] = remainder;
counter++;
number/=16;
}

for(int count=hex.length; count>=0; count--){
if(hex[count]==10)
System.out.print("A");
else if(hex[count]==11)
System.out.print("B");
else if(hex[count]==12)
System.out.print("C");
else if(hex[count]==13)
System.out.print("D");
else if(hex[count]==14)
System.out.print("E");
else if(hex[count]==15)
System.out.print("F");
else
System.out.print(hex[count]);
}
}
}

</code>

lei
Guest
Posts: n/a

 12-30-2006
you can also suggest for improvements..thanks!

Brandon McCombs
Guest
Posts: n/a

 12-30-2006
lei wrote:
> Hello! I made this program of converting binary to hexadecimal, there
> are few errors which are new to me. Please check it out. Thanks!
>
> <code>
>
> import java.lang.*;
> import java.io.*;
>
> class BinaryDecoder{
> public static void main(String args[]) throws IOException{
> System.out.print("Enter a number in binary: ");
>
>
> int decimal=0;
> for(int counter=input.length()-1; counter>=0; counter--){
> if(input.charAt(counter)=='1'){
> int exp=input.length()-1-counter;
> decimal+=Math.pow(2,exp);
> }
> }
>
> int powerOfTen=1;
> int number=decimal;
> int counter=0;
> int[] hex = new int[20];
>
> while(number>0){
> int remainder=number%16;
> hex[counter] = remainder;
> counter++;
> number/=16;
> }
>
> for(int count=hex.length; count>=0; count--){
> if(hex[count]==10)
> System.out.print("A");
> else if(hex[count]==11)
> System.out.print("B");
> else if(hex[count]==12)
> System.out.print("C");
> else if(hex[count]==13)
> System.out.print("D");
> else if(hex[count]==14)
> System.out.print("E");
> else if(hex[count]==15)
> System.out.print("F");
> else
> System.out.print(hex[count]);
> }
> }
> }
>
> </code>
>

How about you tell us the errors you have found so far instead of
relying on us to scan your code and/or compile it to generate the errors?

Thomas Schodt
Guest
Posts: n/a

 12-30-2006
lei wrote:
> there are few errors which are new to me.

> for(int count=hex.length; count>=0; count--){
> if(hex[count]==10)

You are addressing the array 'hex' beyond the end.

lei
Guest
Posts: n/a

 12-30-2006

Thomas Schodt wrote:
> lei wrote:
> > there are few errors which are new to me.

>
> > for(int count=hex.length; count>=0; count--){
> > if(hex[count]==10)

>
> You are addressing the array 'hex' beyond the end.

please explain further and suggest a solution(if it's okay), thank you
so much!

lei
Guest
Posts: n/a

 12-30-2006

It's working now. Another problem:

Enter a number in binary: 10000011

How can I remove the zeros?

Daniel Dyer
Guest
Posts: n/a

 12-30-2006
On Sat, 30 Dec 2006 09:31:44 -0000, lei <(E-Mail Removed)> wrote:

> you can also suggest for improvements..thanks!

It could be so much simpler:

http://java.sun.com/j2se/1.5.0/docs/...va.lang.String,
int)
http://java.sun.com/j2se/1.5.0/docs/...oHexString(int)

Everything after reading the input could be replaced with this one line:

Integer.toHexString(Integer.parseInt(input, 2));

Dan.

--
Daniel Dyer
https://watchmaker.dev.java.net - Evolutionary Algorithm Framework for Java

lei
Guest
Posts: n/a

 12-30-2006

Daniel Dyer wrote:
> On Sat, 30 Dec 2006 09:31:44 -0000, lei <(E-Mail Removed)> wrote:
>
> > you can also suggest for improvements..thanks!

>
> It could be so much simpler:
>
> http://java.sun.com/j2se/1.5.0/docs/...va.lang.String,
> int)
> http://java.sun.com/j2se/1.5.0/docs/...oHexString(int)
>
> Everything after reading the input could be replaced with this one line:
>
> Integer.toHexString(Integer.parseInt(input, 2));
>
> Dan.
>
> --
> Daniel Dyer
> https://watchmaker.dev.java.net - Evolutionary Algorithm Framework for Java

I can't use it. The idea is to create your own toHexString.

Daniel Dyer
Guest
Posts: n/a

 12-30-2006
On Sat, 30 Dec 2006 14:13:50 -0000, lei <(E-Mail Removed)> wrote:

>
> Daniel Dyer wrote:
>> On Sat, 30 Dec 2006 09:31:44 -0000, lei <(E-Mail Removed)> wrote:
>>
>> > you can also suggest for improvements..thanks!

>>
>> It could be so much simpler:
>>
>> http://java.sun.com/j2se/1.5.0/docs/...va.lang.String,
>> int)
>> http://java.sun.com/j2se/1.5.0/docs/...oHexString(int)
>>
>> Everything after reading the input could be replaced with this one line:
>>
>> Integer.toHexString(Integer.parseInt(input, 2));
>>
>> Dan.

>
> I can't use it. The idea is to create your own toHexString.

OK, that wasn't immediately clear.

Dan.

--
Daniel Dyer
https://watchmaker.dev.java.net - Evolutionary Algorithm Framework for Java

Lew
Guest
Posts: n/a

 12-30-2006
lei wrote:
> It's working now. Another problem:
>
> Enter a number in binary: 10000011
>
> How can I remove the zeros?

A very good question!

Take yourself off the keyboard for a few minutes, maybe actually use a
pen[cil] and paper to work through the inherent logic of the challenge.

Think along the lines of, "Hmm, what conditions pertain when a am preparing to
output a '0' that would require me to display it? What conditions would allow
me to suppress it?" (Hint: One of the conditions is that the numeral to
display at the moment is '0'.)

Then detect those conditions in your code, and either emit or decline to emit
the '0' as appropriate.

- Lew