是这样的,就是说我有个字符串strcode。strcode="0500030a02015f6d6c3400320030003100305e7400316708003365e5003a662865e54e0a7f51753591cf00350038003100284e07006b0057002e00680029002c5e744e0a7f51753591cf003100300037003300284e07006b0057002e00680029002c65e58d1f83777387003100340025ff1b65e5574751655e930033003300330028006d0033002f00730029";显然strcode的内容是个二进制或者16进制的编码。那么我想请问一下,在java里如何根据这个编码得到真实内容。

解决方案 »

  1.   


    public class HexToByte { /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    String s = "0500030a02015f6d6c3400320030003100305e7400316708003365e5003a662865e54e0a7f51753591cf00350038003100284e07006b0057002e00680029002c5e744e0a7f51753591cf003100300037003300284e07006b0057002e00680029002c65e58d1f83777387003100340025ff1b65e5574751655e930033003300330028006d0033002f00730029";
    byte[] b = getHexToByteString(s);
    // for(byte i:b)
    // System.out.println(i);
    System.out.println(new String(b,"unicode"));
    }
    /**
     * 十六进制转换成byte数组
     * @param s
     * @return
     */
    public static byte[] getHexToByteString(String s) {
    if (s.length() % 2 == 0) {
    byte[] rtn = new byte[s.length() / 2];
    char[] c = s.toCharArray();
    for (int i = 0; i < rtn.length; i++) {
    rtn[i] = (byte) Integer.parseInt(c[2 * i] + "" + c[2 * i + 1],
    16);
    }
    return rtn;
    } else
    return new byte[] {};
    }
    }
      

  2.   

    结果:
    ???彭水2010年1月3日:昨日上网电量581(万kW.h),年上网电量1073(万kW.h),日负荷率14%;日均入库333(m3/s)