aboutsummaryrefslogtreecommitdiff
path: root/src/utilities/BaseConverter.java
blob: c4fb116f842514b5b33784eaca84aa58f8501364 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*    */ package utilities;
/*    */ 
/*    */ public class BaseConverter
/*    */ {
/*    */   public static final String CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/*    */ 
/*    */   public static double convertToDecimal(String original, int base)
/*    */   {
/* 12 */     int neg = 1;
/* 13 */     if (original.startsWith("-")) {
/* 14 */       original = original.substring(1);
/* 15 */       neg = -1;
/*    */     }
/* 17 */     if (original.contains(".")) return neg * convertToDecimal(original, base, original.indexOf(".") - 1);
/* 18 */     return neg * convertToDecimal(original, base, original.length() - 1);
/*    */   }
/*    */   private static double convertToDecimal(String original, int base, int length) {
/* 21 */     if (base == 10) return Double.parseDouble(original);
/* 22 */     if (base == 1) return original.length();
/* 23 */     if (original.length() == 0) return 0.0D;
/* 24 */     if (original.charAt(0) == '.') return convertToDecimal(original.substring(1), base, length);
/* 25 */     return Math.pow(base, length) * "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(original.charAt(0)) + convertToDecimal(original.substring(1), base, length - 1);
/*    */   }
/*    */   public static String convertFromDecimal(double original, int base) {
/* 28 */     if (original < 0.0D) return "-" + convertFromDecimal(-1.0D * original, base);
/* 29 */     if ((original < 1.0D) && (original > 0.0D)) return "0" + convertFromDecimal(1.0D + original, base).substring(1);
/* 30 */     if (base == 10) return original;
/* 31 */     if (base == 1) {
/* 32 */       String ret = "";
/* 33 */       for (int i = 0; i < original; i++) ret = ret + "0";
/* 34 */       return ret;
/*    */     }
/* 36 */     double pwr = nearestLog(()original, base);
/* 37 */     String ret = "";
/* 38 */     boolean lessThan = false;
/* 39 */     while ((original > 1.E-09D) || (pwr >= 1.0D)) {
/* 40 */       if ((!lessThan) && (pwr < 1.0D)) {
/* 41 */         ret = ret + ".";
/* 42 */         lessThan = true;
/*    */       }
/* 44 */       if (original >= pwr) {
/* 45 */         ret = ret + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt((int)(original / pwr));
/* 46 */         original %= pwr;
/*    */       }
/*    */       else {
/* 49 */         ret = ret + 0;
/*    */       }
/* 51 */       pwr /= base;
/*    */     }
/* 53 */     return ret;
/*    */   }
/*    */   public static String convertFromDecimal(long original, int base, long start, int digits) {
/* 56 */     if (original < base) {
/* 57 */       String ret = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt((int)original);
/* 58 */       while (digits != 0) {
/* 59 */         ret = ret + 0;
/* 60 */         digits--;
/*    */       }
/* 62 */       return ret;
/*    */     }
/*    */ 
/* 65 */     return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt((int)(original / start)) + convertFromDecimal(original % start, base, start / base, digits - 1);
/*    */   }
/*    */   public static long nearestLog(long start, int base) {
/* 68 */     return ()Math.pow(base, (int)(Math.log(start) / Math.log(base)));
/*    */   }
/*    */ }

/* Location:           Modulus.jar
 * Qualified Name:     utilities.BaseConverter
 * JD-Core Version:    0.6.2
 */