客户端发来一串二进制数据,我做的服务端如下:
        PrintWriter out = null;
        BufferedInputStream in = null;
        out = new PrintWriter(socket.getOutputStream(), true);
        in = new BufferedInputStream(socket.getInputStream());
        out.println("10");
        out.flush();
        
          byte[] buf = new byte[255];
          bytes_read = in.read(buf);
 for( int j = 0; j < bytes_read; j++)
          {
             System.out.print(buf[j]);
             System.out.print(" ");
          }
          out.println("11");
          out.flush();
        
        out.close();
        in.close();这样,结果显示的就是ASCII的十进制的值,该怎样得到十六进制的值,还有,由于发送的数据中,有一部分是采用BCD编码的,如果要还原成十进制的数,该怎么做?

解决方案 »

  1.   

    以前我写的一个二进制字节流转换成16进制字符串的函数,分享给你    /**
         * 将一段十六进制数据转换为HEX格式的字符串
         * @param b 需要转换的byte array
         * @return 返回HEX格式的字符串
         */
        public static String ByteToHexString(byte[] b) {
            if (b == null) {
                return "";
            }        String sRet = "";
            String tmp = "";
            int iFrom, iTo;        for (int i = 0; i < b.length; i++) {
                tmp = "00" + Integer.toHexString(b[i]);
                iFrom = tmp.length() - 2;
                iTo = tmp.length();
                sRet = sRet + tmp.substring(iFrom, iTo);
            }
            //System.out.println("sRet is:" +sRet.toUpperCase());
            return sRet.toUpperCase();
        }