home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / Convert.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-02-28  |  2.6 KB  |  204 lines

  1. package espresso;
  2.  
  3. class Convert {
  4.    public static String escape(char var0) {
  5.       char[] var1 = new char[]{var0};
  6.       return escape(new String(var1));
  7.    }
  8.  
  9.    public static String escape(String var0) {
  10.       return new String(string2ascii(var0), 0);
  11.    }
  12.  
  13.    public static byte[] string2ascii(String var0) {
  14.       byte[] var1 = string2source(var0);
  15.       byte[] var2 = new byte[var1.length * 2];
  16.       int var3 = source2ascii(var1, 0, var1.length, var2);
  17.       byte[] var4 = new byte[var3];
  18.       System.arraycopy(var2, 0, var4, 0, var3);
  19.       return var4;
  20.    }
  21.  
  22.    public static byte[] string2source(String var0) {
  23.       byte[] var1 = new byte[var0.length() * 6];
  24.       int var2 = 0;
  25.  
  26.       for(int var3 = 0; var3 < var0.length(); ++var3) {
  27.          char var4 = var0.charAt(var3);
  28.          switch (var4) {
  29.             case '\n':
  30.                var1[var2++] = 92;
  31.                var1[var2++] = 110;
  32.                break;
  33.             case '\t':
  34.                var1[var2++] = 92;
  35.                var1[var2++] = 116;
  36.                break;
  37.             case '\b':
  38.                var1[var2++] = 92;
  39.                var1[var2++] = 98;
  40.                break;
  41.             case '\r':
  42.                var1[var2++] = 92;
  43.                var1[var2++] = 114;
  44.                break;
  45.             case '\f':
  46.                var1[var2++] = 92;
  47.                var1[var2++] = 102;
  48.                break;
  49.             case '"':
  50.                var1[var2++] = 92;
  51.                var1[var2++] = 34;
  52.                break;
  53.             case '\'':
  54.                var1[var2++] = 92;
  55.                var1[var2++] = 39;
  56.                break;
  57.             case '\\':
  58.                var1[var2++] = 92;
  59.                var1[var2++] = 92;
  60.                break;
  61.             default:
  62.                if (' ' <= var4 && var4 <= 127) {
  63.                   var1[var2++] = (byte)var4;
  64.                } else {
  65.                   var1[var2++] = 92;
  66.                   var1[var2++] = 117;
  67.                   var1[var2++] = int2digit(var4 >> 12 & 15);
  68.                   var1[var2++] = int2digit(var4 >> 8 & 15);
  69.                   var1[var2++] = int2digit(var4 >> 4 & 15);
  70.                   var1[var2++] = int2digit(var4 & 15);
  71.                }
  72.          }
  73.       }
  74.  
  75.       byte[] var5 = new byte[var2];
  76.       System.arraycopy(var1, 0, var5, 0, var2);
  77.       return var5;
  78.    }
  79.  
  80.    public static String ascii2string(byte[] var0, int var1, int var2) {
  81.       char[] var3 = new char[var2];
  82.       int var4 = 0;
  83.  
  84.       int var5;
  85.       int var6;
  86.       for(var5 = 0; var4 < var2; var3[var5++] = (char)var6) {
  87.          var6 = var0[var1 + var4++];
  88.          if (var6 >= 224) {
  89.             var6 = (var6 & 15) << 12;
  90.             var6 |= (var0[var1 + var4++] & 63) << 6;
  91.             var6 |= var0[var1 + var4++] & 63;
  92.          } else if (var6 >= 192) {
  93.             var6 = (var6 & 31) << 6;
  94.             var6 |= var0[var1 + var4++] & 63;
  95.          }
  96.       }
  97.  
  98.       return new String(var3, 0, var5);
  99.    }
  100.  
  101.    public static int source2ascii(byte[] var0, int var1, int var2, byte[] var3) {
  102.       int var4 = 0;
  103.       int var5 = 0;
  104.  
  105.       while(var5 < var2) {
  106.          if (var0[var1 + var5] == 92 && var5 + 1 < var2) {
  107.             ++var5;
  108.             switch (var0[var1 + var5]) {
  109.                case 98:
  110.                   var3[var4++] = 8;
  111.                   ++var5;
  112.                   continue;
  113.                case 99:
  114.                case 100:
  115.                case 101:
  116.                case 103:
  117.                case 104:
  118.                case 105:
  119.                case 106:
  120.                case 107:
  121.                case 108:
  122.                case 109:
  123.                case 111:
  124.                case 112:
  125.                case 113:
  126.                case 115:
  127.                default:
  128.                   break;
  129.                case 102:
  130.                   var3[var4++] = 12;
  131.                   ++var5;
  132.                   continue;
  133.                case 110:
  134.                   var3[var4++] = 10;
  135.                   ++var5;
  136.                   continue;
  137.                case 114:
  138.                   var3[var4++] = 13;
  139.                   ++var5;
  140.                   continue;
  141.                case 116:
  142.                   var3[var4++] = 9;
  143.                   ++var5;
  144.                   continue;
  145.                case 117:
  146.                   if (var5 + 4 < var2) {
  147.                      int var6 = 0;
  148.                      int var7 = 1;
  149.  
  150.                      int var8;
  151.                      for(var8 = 0; var7 <= 4 && var8 >= 0; ++var7) {
  152.                         var8 = digit2int(var0[var1 + var5 + var7], 16);
  153.                         var6 = var6 * 16 + var8;
  154.                      }
  155.  
  156.                      if (var8 >= 0) {
  157.                         if (var6 <= 127) {
  158.                            var3[var4++] = (byte)var6;
  159.                         } else if (var6 <= 1023) {
  160.                            var3[var4++] = (byte)(192 | var6 >> 6);
  161.                            var3[var4++] = (byte)(128 | var6 & 63);
  162.                         } else {
  163.                            var3[var4++] = (byte)(224 | var6 >> 12);
  164.                            var3[var4++] = (byte)(128 | var6 >> 6 & 63);
  165.                            var3[var4++] = (byte)(128 | var6 & 63);
  166.                         }
  167.  
  168.                         var5 += 5;
  169.                         continue;
  170.                      }
  171.                   }
  172.             }
  173.          }
  174.  
  175.          byte var9 = var0[var1 + var5++];
  176.          if (var9 >= 0) {
  177.             var3[var4++] = var9;
  178.          } else {
  179.             var3[var4++] = (byte)(192 | var9 >> 6 & 3);
  180.             var3[var4++] = (byte)(128 | var9 & 63);
  181.          }
  182.       }
  183.  
  184.       return var4;
  185.    }
  186.  
  187.    public static byte int2digit(int var0) {
  188.       return var0 <= 9 ? (byte)(var0 + 48) : (byte)(var0 - 10 + 65);
  189.    }
  190.  
  191.    public static int digit2int(byte var0, int var1) {
  192.       if (48 <= var0 && var0 <= 57 && var0 < 48 + var1) {
  193.          return var0 - 48;
  194.       } else if (65 <= var0 && var0 < 65 + var1 - 10) {
  195.          return var0 - 65 + 10;
  196.       } else {
  197.          return 97 <= var0 && var0 < 97 + var1 - 10 ? var0 - 97 + 10 : -1;
  198.       }
  199.    }
  200.  
  201.    public Convert() {
  202.    }
  203. }
  204.