Android中 二进制、十进制、十六进制串、byte数组、字符串、ASCII之间的相互转化
程序员文章站
2022-03-13 17:19:41
...
之前做蓝牙通讯相关项目,搜集的一些方法,在此整理一下,以方便以后的使用。
/**
* byte数组转成字符串
*/
public String btye2Str(byte[] data) {
String str = new String(data);
return str;
}
/**
* 将byte数组化为十六进制串
*/
public static final StringBuilder byte2hex(byte[] data) {
StringBuilder stringBuilder = new StringBuilder(data.length);
for (byte byteChar : data) {
stringBuilder.append(String.format("%02X ", byteChar).trim());
}
return stringBuilder;
}
/**
* 将byte数组转化成浮点数(4个字节带小数的浮点数)
*/
public static float byte2int_Float(byte b[]) {
int bits = b[3] & 0xff | (b[2] & 0xff) << 8 | (b[1] & 0xff) << 16
| (b[0] & 0xff) << 24;
int sign = ((bits & 0x80000000) == 0) ? 1 : -1;
int exponent = ((bits & 0x7f800000) >> 23);
int mantissa = (bits & 0x007fffff);
mantissa |= 0x00800000;
// Calculate the result:
float f = (float) (sign * mantissa * Math.pow(2, exponent - 150));
return f;
}
/**
* 将十六进制串转化为byte数组
*/
public static final byte[] hex2byte(String hex) throws IllegalArgumentException {
if (hex.length() % 2 != 0) {
throw new IllegalArgumentException();
}
char[] arr = hex.toCharArray();
byte[] b = new byte[hex.length() / 2];
for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) {
String swap = "" + arr[i++] + arr[i];
int byteint = Integer.parseInt(swap, 16) & 0xFF;
b[j] = new Integer(byteint).byteValue();
}
return b;
}
/**
* 将十六进制串转换为二进制
* */
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;
}
/**
* 将字符串转成ASCII值
*/
public static String strToASCII(String data) {
String requestStr = "";
for (int i = 0; i < data.length(); i++) {
char a = data.charAt(i);
int aInt = (int) a;
requestStr = requestStr + integerToHexString(aInt);
}
return requestStr;
}
/**
* 将十进制整数转为十六进制数,并补位
* */
public static String integerToHexString(int s) {
String ss = Integer.toHexString(s);
if (ss.length() % 2 != 0) {
ss = "0" + ss;//0F格式
}
return ss.toUpperCase();
}
/**
* 将二进制转换成十六进制串
* */
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();
}
上一篇: ViewModel
下一篇: 蓝魔法师(树形DP)