byte[] data = new byte[4];
data[0] = 26;
data[1] = -61;
data[2] = 0;
data[3] = 0;
String str = new String(data);
byte[] b = str.getBytes(); for (int i = 0; i < b.length; i ++)
{
System.out.println("b[" + i + "]:" + b[i]);
}结果为:
b[0]:26
b[1]:63
b[2]:0
b[3]:0
data[0] = 26;
data[1] = -61;
data[2] = 0;
data[3] = 0;
String str = new String(data);
byte[] b = str.getBytes(); for (int i = 0; i < b.length; i ++)
{
System.out.println("b[" + i + "]:" + b[i]);
}结果为:
b[0]:26
b[1]:63
b[2]:0
b[3]:0
public static void main(String[] args){
byte[] data = new byte[4];
data[0] = 26;
data[1] = -61;
data[2] = 0;
data[3] = 0;
String str = new String(data);
byte[] b = str.getBytes(); for(int i = 0; i < b.length; i++)
{
System.out.println("b[" + i + "]:" + b[i]);
}
}
}
结果为:
b[0]:26
b[1]:-61
b[2]:0
b[3]:0
b[0]:26
b[1]:-61
b[2]:0
b[3]:0但我这边做出的结果是:
b[0]:26
b[1]:63
b[2]:0
b[3]:0
b[1]最后的结果是63,ascii码里63是?String str = new String(data)
应该是将byte转为char存到字符串里-61转成char,没有标准的字符对应,实际str里相应的位置什么都没存!
byte[] b = str.getBytes();
这时候,再得到byte的时候,这个位置实际上转不回来了!
jdk可能在这里默认得用?号来处理了,就得到了63实际上你用别的值,比如-60,-66等。得到的结果都是63
byte[] data = new byte[4];
data[0] = 26;
data[1] = -61;
data[2] = 0;
data[3] = 0;
String str;
try
{
str = new String(data,0,4,"ISO-8859-1");
byte[] b = str.getBytes("ISO-8859-1");
for (int i = 0; i < b.length; i ++)
{
System.out.println("b[" + i + "]:" + b[i]);
}
} catch ( UnsupportedEncodingException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}