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);
使用这种方式,会出现乱码输出如下:
输入:
0
输出:
(will show binary square)
答案 0 :(得分:1)
分析此错误:
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
当我写"(char)(((int)0& 1)+48)" IDE告诉我转换为int是多余的
正确的代码:
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);
第二种方式:
StringBuilder sb = new StringBuilder("");
for(int i = 15; i >= 0; i--,input>>=1){
sb.insert(0,String.valueOf(input&1));
}
return sb.toString();