Java使用String.valueOf(char [])但显示乱码

时间:2017-09-13 06:33:13

标签: java arrays string char

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)

1 个答案:

答案 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();
相关问题