bece2760ed2323dffd37adcb96cfafc7c6481c10.svn-base 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package eVVM.apk.helper;
  2. import android.util.Log;
  3. import java.math.BigInteger;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * @Author leisurexi
  8. * @Description 进制转换工具类
  9. * @Date 2019/6/3 19:51
  10. */
  11. public class ConversionUtil {
  12. /**
  13. * 十进制转换为二进制字符串
  14. */
  15. public static String decToBin(int number) {
  16. return Integer.toBinaryString(number);
  17. }
  18. /**
  19. * 二进制字符串转换为十进制数字
  20. */
  21. public static int binToDec(String number) {
  22. return Integer.valueOf(number, 2);
  23. }
  24. /**
  25. * 十进制转换为十六进制字符串
  26. */
  27. public static String decToHex(int number) {
  28. return Integer.toHexString(number);
  29. }
  30. /**
  31. * 十六进制字符串转十进制数字
  32. */
  33. public static int hexToDec(String number) {
  34. return Integer.valueOf(number, 16);
  35. }
  36. /**
  37. * 十六进字符串制转二进制字符串
  38. * 这是单个转
  39. */
  40. public static String hexToBin(String number) {
  41. Integer hex = Integer.valueOf(number, 16);
  42. return Integer.toBinaryString(hex);
  43. }
  44. /**
  45. * 16进制直接转换成为16进制的字符串(无需Unicode解码)
  46. * @param hexStr 这是整个转
  47. * @return
  48. */
  49. public static String hexStr2Str(String hexStr) {
  50. String str = "0123456789ABCDEF";
  51. char[] hexs = hexStr.toCharArray();
  52. byte[] bytes = new byte[hexStr.length() / 2];
  53. int n;
  54. for (int i = 0; i < bytes.length; i++) {
  55. n = str.indexOf(hexs[2 * i]) * 16;
  56. n += str.indexOf(hexs[2 * i + 1]);
  57. bytes[i] = (byte) (n & 0xff);
  58. }
  59. return new String(bytes);
  60. }
  61. /**
  62. * 十六进字符串制转二进制字符串
  63. * 这是整个转
  64. * @return 10100110000110000110000110000
  65. */
  66. public static String hexToBins(String hexStr) {
  67. if (hexStr.length() < 1)
  68. return null;
  69. StringBuilder result = new StringBuilder();
  70. for (int i = 0; i < hexStr.length() / 2; i++) {
  71. String hex = String.valueOf(hexStr.charAt(i * 2)) + hexStr.charAt(i * 2 + 1);
  72. String binStr = Integer.toBinaryString(Integer.valueOf(hex, 16));
  73. String str = "";
  74. int shao = 8 - binStr.length();
  75. for(int k = 0;k < shao;k++){
  76. str = str + "0";
  77. }
  78. binStr = str + binStr;
  79. result.append(binStr);
  80. // Log.e("----",hex);
  81. // Log.e("----",binStr);
  82. }
  83. return result.toString();
  84. }
  85. /**
  86. * 16进制转ascii码
  87. * 格式为 1430303030
  88. */
  89. public static String hexToAscii(String hex) {
  90. StringBuilder sb = new StringBuilder();
  91. for (int i = 0; i < hex.length() - 1; i += 2) {
  92. String output = hex.substring(i, (i + 2));
  93. int decimal = Integer.parseInt(output, 16);
  94. char c = (char) decimal;
  95. if (c < 48 || c > 57) {
  96. continue;
  97. }
  98. sb.append(c);
  99. }
  100. return sb.toString();
  101. }
  102. /**
  103. * 温度解密
  104. */
  105. public static List<String> temperatureDecry(String[] hexNumbers) {
  106. String bins = "";
  107. // for (int i = 0; i < hexNumbers.length; i++) {
  108. // bins += hexToBin(hexNumbers[i]);
  109. // }
  110. List<String> result = new ArrayList<>(bins.length() / 2);
  111. for (int i = 0; i < bins.length(); i++) {
  112. if (i != 0 && i % 2 == 0) {
  113. result.add(bins.substring(i - 1, i) + bins.substring(i, i + 1));
  114. }
  115. }
  116. return result;
  117. }
  118. }