home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / misc / UCEncoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.5 KB  |  75 lines

  1. package sun.misc;
  2.  
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5.  
  6. public class UCEncoder extends CharacterEncoder {
  7.    private static final byte[] map_array = new byte[]{48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 40, 41};
  8.    private int sequence;
  9.    private byte[] tmp = new byte[2];
  10.    private CRC16 crc = new CRC16();
  11.  
  12.    protected int bytesPerAtom() {
  13.       return 2;
  14.    }
  15.  
  16.    protected int bytesPerLine() {
  17.       return 48;
  18.    }
  19.  
  20.    protected void encodeAtom(OutputStream var1, byte[] var2, int var3, int var4) throws IOException {
  21.       byte var8 = var2[var3];
  22.       byte var9;
  23.       if (var4 == 2) {
  24.          var9 = var2[var3 + 1];
  25.       } else {
  26.          var9 = 0;
  27.       }
  28.  
  29.       this.crc.update(var8);
  30.       if (var4 == 2) {
  31.          this.crc.update(var9);
  32.       }
  33.  
  34.       var1.write(map_array[(var8 >>> 2 & 56) + (var9 >>> 5 & 7)]);
  35.       int var6 = 0;
  36.       int var7 = 0;
  37.  
  38.       for(int var5 = 1; var5 < 256; var5 *= 2) {
  39.          if ((var8 & var5) != 0) {
  40.             ++var6;
  41.          }
  42.  
  43.          if ((var9 & var5) != 0) {
  44.             ++var7;
  45.          }
  46.       }
  47.  
  48.       var6 = (var6 & 1) * 32;
  49.       var7 = (var7 & 1) * 32;
  50.       var1.write(map_array[(var8 & 31) + var6]);
  51.       var1.write(map_array[(var9 & 31) + var7]);
  52.    }
  53.  
  54.    protected void encodeLinePrefix(OutputStream var1, int var2) throws IOException {
  55.       var1.write(42);
  56.       this.crc.value = 0;
  57.       this.tmp[0] = (byte)var2;
  58.       this.tmp[1] = (byte)this.sequence;
  59.       this.sequence = this.sequence + 1 & 255;
  60.       this.encodeAtom(var1, this.tmp, 0, 2);
  61.    }
  62.  
  63.    protected void encodeLineSuffix(OutputStream var1) throws IOException {
  64.       this.tmp[0] = (byte)(this.crc.value >>> 8 & 255);
  65.       this.tmp[1] = (byte)(this.crc.value & 255);
  66.       this.encodeAtom(var1, this.tmp, 0, 2);
  67.       super.pStream.println();
  68.    }
  69.  
  70.    protected void encodeBufferPrefix(OutputStream var1) throws IOException {
  71.       this.sequence = 0;
  72.       super.encodeBufferPrefix(var1);
  73.    }
  74. }
  75.