08ae8e569ab2236b6c9e7d54c5fae34248c9b76b.svn-base 3.7 KB

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