客户端发来一串二进制数据,我做的服务端如下:
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编码的,如果要还原成十进制的数,该怎么做?
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编码的,如果要还原成十进制的数,该怎么做?
* 将一段十六进制数据转换为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();
}