| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package eVVM.apk.helper;
- import android.util.Log;
- import java.math.BigInteger;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @Author leisurexi
- * @Description 进制转换工具类
- * @Date 2019/6/3 19:51
- */
- public class ConversionUtil {
- /**
- * 十进制转换为二进制字符串
- */
- public static String decToBin(int number) {
- return Integer.toBinaryString(number);
- }
- /**
- * 二进制字符串转换为十进制数字
- */
- public static int binToDec(String number) {
- return Integer.valueOf(number, 2);
- }
- /**
- * 十进制转换为十六进制字符串
- */
- public static String decToHex(int number) {
- return Integer.toHexString(number);
- }
- /**
- * 十六进制字符串转十进制数字
- */
- public static int hexToDec(String number) {
- return Integer.valueOf(number, 16);
- }
- /**
- * 十六进字符串制转二进制字符串
- * 这是单个转
- */
- public static String hexToBin(String number) {
- Integer hex = Integer.valueOf(number, 16);
- return Integer.toBinaryString(hex);
- }
- /**
- * 16进制直接转换成为16进制的字符串(无需Unicode解码)
- * @param hexStr 这是整个转
- * @return
- */
- public static String hexStr2Str(String hexStr) {
- hexStr = hexStr +" ";
- hexStr = hexStr.replace( "0x00 ","" ) ;
- hexStr = hexStr.substring (0, hexStr. length() -1);
- String str = "0123456789ABCDEF";
- char[] hexs = hexStr.toCharArray();
- byte[] bytes = new byte[hexStr.length() / 2];
- int n;
- for (int i = 0; i < bytes.length; i++) {
- n = str.indexOf(hexs[2 * i]) * 16;
- n += str.indexOf(hexs[2 * i + 1]);
- bytes[i] = (byte) (n & 0xff);
- }
- return new String(bytes);
- }
- /**
- * 十六进字符串制转二进制字符串
- * 这是整个转
- * @return 10100110000110000110000110000
- */
- public static String hexToBins(String hexStr) {
- if (hexStr.length() < 1)
- return null;
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < hexStr.length() / 2; i++) {
- String hex = String.valueOf(hexStr.charAt(i * 2)) + hexStr.charAt(i * 2 + 1);
- String binStr = Integer.toBinaryString(Integer.valueOf(hex, 16));
- String str = "";
- int shao = 8 - binStr.length();
- for(int k = 0;k < shao;k++){
- str = str + "0";
- }
- binStr = str + binStr;
- result.append(binStr);
- // Log.e("----",hex);
- // Log.e("----",binStr);
- }
- return result.toString();
- }
- /**
- * 16进制转ascii码
- * 格式为 1430303030
- */
- public static String hexToAscii(String hex) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < hex.length() - 1; i += 2) {
- String output = hex.substring(i, (i + 2));
- int decimal = Integer.parseInt(output, 16);
- char c = (char) decimal;
- if (c < 48 || c > 57) {
- continue;
- }
- sb.append(c);
- }
- return sb.toString();
- }
- /**
- * 温度解密
- */
- public static List<String> temperatureDecry(String[] hexNumbers) {
- String bins = "";
- // for (int i = 0; i < hexNumbers.length; i++) {
- // bins += hexToBin(hexNumbers[i]);
- // }
- List<String> result = new ArrayList<>(bins.length() / 2);
- for (int i = 0; i < bins.length(); i++) {
- if (i != 0 && i % 2 == 0) {
- result.add(bins.substring(i - 1, i) + bins.substring(i, i + 1));
- }
- }
- return result;
- }
- }
|