-2
char[] string = new char[16];
for(int i = 15; i >= 0; i--,input>>=1){
    string[i] = (char)(input&1+48);//ascii '0'=48
}
return String.valueOf(string);

use this way, will get garbled output as follow:

Input:

0 

Output:

(will show binary square)
Yam
  • 21
  • 3

1 Answers1

1

Analysis about this Error:

char[] string2 = {(char)(0&1+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test
char[] string2 = {(char)(((int)0&1)+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test
System.out.println(string2);//Test
System.out.println(String.valueOf(string2));//Test

When I write "(char)(((int)0&1)+48)" the IDE told me cast to int is redundant

The Right Code:

char[] string = new char[16];
for(int i = 15; i >= 0; i--,input>>=1){
    string[i] = (char)((int)(input&1)+48);//ascii '0'=48
}
return String.valueOf(string);

Second Way:

StringBuilder sb = new StringBuilder("");
for(int i = 15; i >= 0; i--,input>>=1){
    sb.insert(0,String.valueOf(input&1));
}
return sb.toString();
Yam
  • 21
  • 3