此博客会一直更新,整理一些开发中使用的utils方法,年纪大了,整理出来以后用的时候可以直接拿过来。
1、int[]数组转换成byte[]数组
/**
* int[]转换成byte[]
* @param intArray int[]
* @return byte[]
*/
public static byte[] intsToBytes(int[] intArray) {
if (intArray == null || intArray.length == 0) {
return null;
}
int size = intArray.length;
byte[] value = new byte[size];
for (int i = 0; i < size; i++) {
value[i] = (byte) intArray[i];
}
return value;
}
2、byte[]数组转换成Integer[]数组
/**
* 将byte[]转换成Integer[]
* @param byteArray byte[]
* @return Integer[]
*/
public static Integer[] bytesToIntegers(byte[] byteArray) {
if (byteArray == null || byteArray.length == 0) {
return null;
}
int size = byteArray.length;
Integer[] value = new Integer[size];
for (int i = 0; i < size; i++) {
value[i] = (int) byteArray[i];
}
return value;
}
3、int[]转换成int
/**
* int[]转换成int
* @param intArray int[]
* @return int
*/
public static int intsToInt(int[] intArray) {
if (intArray == null) {
return -1;
}
int value = -1;
switch (intArray.length) {
case 1:
value = intArray[0];
break;
case 2:
value = ((intArray[0] & 0xFF) << 8) | (intArray[1] & 0xFF);
break;
case 3:
value = ((intArray[0] & 0xFF) << 16) | ((intArray[1] & 0xFF) << 8) | (intArray[2] & 0xFF);
break;
case 4:
value = ((intArray[0] & 0xFF) << 24) | ((intArray[1] & 0xFF) << 16) | ((intArray[2] & 0xFF) << 8) | (intArray[3] & 0xFF);
break;
default:
if (DEBUG) Log.e(TAG, "该条SPI消息数据长度超过4位了");
break;
}
return value;
}
4、String转GBK格式的int[]
/**
* String转GBK格式的int[]
* @param value String
* @return GBK格式的int[]
*/
public static Integer[] strToGBKInts(String value) {
if (TextUtils.isEmpty(value)) {
Log.w(TAG, "strToGBKInts:value is null!");
return new Integer[]{};
}
Integer[] ints = null;
try {
byte[] bytes = value.getBytes("GBK");
ints = new Integer[bytes.length];
for (int i = 0; i < bytes.length; i++) {
ints[i] = bytes[i] & 0xFF;
}
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "strToGBKInts error ", e);
}
return ints;
}
5、在指定数组中的指定元素位置 插入指定元素
/**
* 在指定数组中的指定元素位置 插入指定元素
* @param arr 这里需要插入一个指定数组作为源数组供查询
* @param index 指定数组中的指定元素下标
* @param num 指定数组指定元素位置插入的指定元素
* @return data 插入完成数据
*/
public static Integer[] insertData(Integer[] arr, int index, int num) {
Integer[] data = new Integer[arr.length + 1];
System.arraycopy(arr, 0, data, 0, index);
data[index] = num;
System.arraycopy(arr, index, data, index + 1, arr.length - index);
return data;
}
6、数组合并
/**
* 数组合并
*
* @param first 第一个数组
* @param rest 其余数组
* @param <T> 泛型
* @return 合并后的数组
*/
@SafeVarargs
public static <T> T[] concatAll(T[] first, T[]... rest) {
int totalLength = first.length;
for (T[] array : rest) {
totalLength += array.length;
}
T[] result = Arrays.copyOf(first, totalLength);
int offset = first.length;
for (T[] array : rest) {
System.arraycopy(array, 0, result, offset, array.length);
offset += array.length;
}
return result;
}
|