- 位转字节
解释:什么叫位转字节
一个字节由8位组成,十进制8,转二进制则为1000 0000,位转字节就是把1000 0000 转成8,并且用字节表示
public static byte BitToByte(String byteStr) {
int re, len;
if (null == byteStr) {
return 0;
}
len = byteStr.length();
if (len != 4 && len != 8) {
return 0;
}
if (len == 8) {// 8 bit处理
if (byteStr.charAt(0) == '0') {// 正数
re = Integer.parseInt(byteStr, 2);
} else {// 负数
re = Integer.parseInt(byteStr, 2) - 256;
}
} else {//4 bit处理
re = Integer.parseInt(byteStr, 2);
}
return (byte) re;
}
字节数组转十六进制字符串
//**不带分隔符*/
public static String parseByte2HexStr(byte buf[]) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buf.length; i++) {
String hex = Integer.toHexString(buf[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
//**带分隔符*/
public static String byte2HexStr(byte[] b, String fen) {
String stmp = "";
StringBuilder sb = new StringBuilder("");
for (int n = 0; n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
sb.append(fen);
}
return sb.toString().toUpperCase().trim();
}
int类型转二进制字符串
private String getIntTo2Byte(int i){
String data = Integer.toBinaryString(i);
if (data.length() < 2){
data = "0" +data;
}else if (data.length() > 2){
data = "0";
}
return data;
}
/**将16进制转换为二进制
* @param hexStr
* @return
* 串口通信必须用二进制通信
*/
public static byte[] parseHexStr2Byte(String hexStr) {
if (hexStr.length() < 1)
return null;
byte[] result = new byte[hexStr.length()/2];
for (int i = 0;i< hexStr.length()/2; i++) {
int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);
int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);
result[i] = (byte) (high * 16 + low);
}
return result;
}
//*************************** 分割线 ***************************/
/
* bytes转换成十六进制字符串
*
* @param b byte数组 fen
* @return String 每个Byte值之间空格分隔
*/
public static String byte2HexStr(byte[] b, String fen)
{
String stmp = "";
StringBuilder sb = new StringBuilder("");
for (int n = 0; n < b.length; n++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
sb.append(fen);
}
return sb.toString().toUpperCase().trim();
}