66979de2316098a4cbe7316649b69dd967b32b48.svn-base 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. hexStr = hexStr +" ";
  51. hexStr = hexStr.replace( "0x00 ","" ) ;
  52. hexStr = hexStr.substring (0, hexStr. length() -1);
  53. String str = "0123456789ABCDEF";
  54. char[] hexs = hexStr.toCharArray();
  55. byte[] bytes = new byte[hexStr.length() / 2];
  56. int n;
  57. for (int i = 0; i < bytes.length; i++) {
  58. n = str.indexOf(hexs[2 * i]) * 16;
  59. n += str.indexOf(hexs[2 * i + 1]);
  60. bytes[i] = (byte) (n & 0xff);
  61. }
  62. return new String(bytes);
  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. }