public class zhuanTest {
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub

     byte[] aa = hexStringToBytes("303038393434AC");
 String str=new String(aa,"gb2312");
 System.out.println(str);
}
/**
 * Convert hex string to byte[]
 * 
 * @param hexString
 * @return
 */
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
// hexString = hexString.toUpperCase(); //如果是大写形式
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
} private static byte charToByte(char c) {
return (byte) "0123456789abcdef".indexOf(c);
// return (byte) "0123456789ABCDEF".indexOf(c);
}
}是这样的,我现在把16进制字符串303038393434AC调hexStringToBytes得到byte数组结果为
[48, 48, 56, 57, 52, 52, -1]
可是最后打出的结果为 008944?  
请问下有什么方法能让-1转成正常的String,请指教!Java

解决方案 »

  1.   

    AC=172这个 编码 既不在ASCII字符编码中,也不在GB2312字符集编码里,你让人家Java怎么显示??非要显示的话,改成
    String str=new String(aa,"ISO-8859-1");你会得到一个 ¬
      

  2.   


    你好ASCII编码范围是-128~127 AC 转换为byte 后对应值是-1 你这种编码方式我也试过 还是出来?
    我现在 想做的就是让byte数组转为字符串 网上找了好多 都没有!!
      

  3.   

    已经解决了 默认java编码就行!
      

  4.   


    你好ASCII编码范围是-128~127 AC 转换为byte 后对应值是-1 你这种编码方式我也试过 还是出来?
    我现在 想做的就是让byte数组转为字符串 网上找了好多 都没有!!那个-1应该是你某处大小写处理了,
    我试了你的代码,不会出-1, 
    AC=172 = -83的补码,打印出来是byte的话是-83