这两天利用java进行消息编解码的时候,总是碰到一个问题,需要给byte赋值.
如
需要将第一位地址的值 aa赋给一个变量,就很是比较麻烦。今天写了一个,记录下来
public static byte generateByte(String s) {
byte tmp = 0;
char[] arr = s.toCharArray();
if(arr.length > 2){
return tmp;
}
int t0 = Integer.parseInt(Character.toString(arr[0]), 16);
int t1 = Integer.parseInt(Character.toString(arr[1]), 16);
byte tmp0 = (byte)t0;
byte tmp1 = (byte)t1;
tmp = (byte) (tmp0 << 4);
tmp = (byte) (tmp | tmp1);
return tmp;
}
byte数组打印代码
/**
*
* @Title: getHexByte
* @Description: 将二进制码流变成可打印的string类型
* @param b : 需要打印的码流
* @param start: 打印的开始点
* @param length:打印长度
* @return
* @return: StringBuilder
*/
public static StringBuilder getHexByte(byte[] b,int start, int length){
int t = 0;
StringBuilder sb = new StringBuilder();
for (int i = start; i < start + length; i++) {
if(i > 2 && b[i-1] == 'U' && b[i-2] == 'U'){
break;
}
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(" ").append(hex.toUpperCase());
t++;
if(t % 16 == 0){
sb.append("\n");
}
}
sb.append("\n");
return sb;
}