好象不行也, 譬如: 在Server端将一个字符串"ying"先转换成byte数组,然后发送给Client 在Client端写了如下一段程序,其中byteTOchar函数的说明见下面: String[] s = new String[4]; char[] c = null; for(int i=0; i<4; i++) { c = (byteToChar(recvBuf[i], 16)); s[i] = java.lang.String.valueOf(c);但是s[i]输出的是79 69 6E 67,而不是字符 byteToChar函数的说明: public static char[] byteToChar(byte dataByte , int radix) { char[] result = null; int tmpInt; switch(radix) { case 2: break; case 4: break; case 10: break; case 16: result = new char[2]; tmpInt = (dataByte & 0xf0)>>4; result[0]= DecToHex(tmpInt); tmpInt = (dataByte & 0x0f); result[1]= DecToHex(tmpInt); break;
} return result; }
public static char DecToHex(int D) { if ( D >= 0 && D <= 9 ) return ((char)(D+48));
switch(D) { case 10: return('A'); case 11: return('B'); case 12: return('C'); case 13: return('D'); case 14: return('E'); case 15: return('F'); } return 0; }
String.valueOf : the parameter must be a int value( byte variant also can work). byte b=31; out.println(String.valueOf(b));//result is "31" So your program might like this: String[] s = new String[4]; for(int i=0; i<4; i++) { s[i] = java.lang.String.valueOf(recvBuf[i]);moreover,if you want to use a char variant as the parameter, please convert it to type int first . s[i] = java.lang.String.valueOf(int(c[i]);
>>然后怎么才能把这个字节数组再还原到String呢 use new String(byte[])
So your program might like this: String[] s = new String[4]; for(int i=0; i<4; i++) { s[i] = java.lang.String.valueOf(recvBuf[i]);这样输出的结果仍然是Ascii码.
ok,i see ,you might use new String(recvBuf) simply .
譬如:
在Server端将一个字符串"ying"先转换成byte数组,然后发送给Client
在Client端写了如下一段程序,其中byteTOchar函数的说明见下面:
String[] s = new String[4];
char[] c = null;
for(int i=0; i<4; i++) {
c = (byteToChar(recvBuf[i], 16));
s[i] = java.lang.String.valueOf(c);但是s[i]输出的是79 69 6E 67,而不是字符
byteToChar函数的说明:
public static char[] byteToChar(byte dataByte , int radix)
{
char[] result = null;
int tmpInt;
switch(radix)
{
case 2:
break;
case 4:
break;
case 10:
break;
case 16:
result = new char[2];
tmpInt = (dataByte & 0xf0)>>4;
result[0]= DecToHex(tmpInt);
tmpInt = (dataByte & 0x0f);
result[1]= DecToHex(tmpInt);
break;
}
return result;
}
public static char DecToHex(int D)
{
if ( D >= 0 && D <= 9 )
return ((char)(D+48));
switch(D)
{
case 10:
return('A');
case 11:
return('B');
case 12:
return('C');
case 13:
return('D');
case 14:
return('E');
case 15:
return('F');
}
return 0;
}
byte b=31;
out.println(String.valueOf(b));//result is "31"
So your program might like this: String[] s = new String[4];
for(int i=0; i<4; i++) {
s[i] = java.lang.String.valueOf(recvBuf[i]);moreover,if you want to use a char variant as the parameter, please convert it to type int first .
s[i] = java.lang.String.valueOf(int(c[i]);
>>然后怎么才能把这个字节数组再还原到String呢
use new String(byte[])
for(int i=0; i<4; i++) {
s[i] = java.lang.String.valueOf(recvBuf[i]);这样输出的结果仍然是Ascii码.
thank you.
string s=c+c
print s="AA"