⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringconverter.java

📁 一个可以在applet窗体上持行sql语句并显示返回结果的程序
💻 JAVA
字号:
/*
 * StringConverter.java
 */

package org.hsql;
import java.sql.*;
import java.io.*;

class StringConverter {
  private static final char HEXCHAR[]={
    '0','1','2','3','4','5','6','7',
    '8','9','a','b','c','d','e','f'
  };
  private static final String HEXINDEX="0123456789abcdef          ABCDEF";

  public static byte[] hexToByte(String s) {
    int l=s.length()/2;
    byte data[]=new byte[l];
    int j=0;
    for(int i=0;i<l;i++) {
      char c=s.charAt(j++);
      int n,b;
      n=HEXINDEX.indexOf(c);
      b=(n & 0xf) << 4;
      c=s.charAt(j++);
      n=HEXINDEX.indexOf(c);
      b+=(n & 0xf);
      data[i]=(byte)b;
    }
    return data;
  }
  static String byteToHex(byte b[]) {
    int len=b.length;
    StringBuffer s=new StringBuffer();
    for(int i=0;i<len;i++) {
      int c=((int)b[i]) & 0xff;
      s.append(HEXCHAR[c>>4 & 0xf]);
      s.append(HEXCHAR[c & 0xf]);
    }
    return s.toString();
  }
  static String unicodeToHexString(String s) {
    ByteArrayOutputStream bout=new ByteArrayOutputStream();
    DataOutputStream out=new DataOutputStream(bout);
    try {
      out.writeUTF(s);
      out.close();
      bout.close();
    } catch(IOException e) {
      return null;
    }
    return byteToHex(bout.toByteArray());
  }
  public static String hexStringToUnicode(String s) {
    byte[] b=hexToByte(s);
    ByteArrayInputStream bin=new ByteArrayInputStream(b);
    DataInputStream in=new DataInputStream(bin);
    try {
      return in.readUTF();
    } catch(IOException e) {
      return null;
    }
  }
  public static String unicodeToAscii(String s) {
    if(s==null || s.equals("")) {
      return s;
    }
    int len=s.length();
    StringBuffer b=new StringBuffer(len);
    for(int i=0;i<len;i++) {
      char c=s.charAt(i);
      if(c=='\\') {
        if(i<len-1 && s.charAt(i+1)=='u') {
          b.append(c);  // encode the \ as unicode, so 'u' is ignored
          b.append("u005c"); // splited so the source code is not changed...
        } else {
          b.append(c);
        }
      } else if((c>=0x0020)&&(c<=0x007f)) {
        b.append(c);  // this is 99%
      } else {
        b.append("\\u");
        b.append(HEXCHAR[(c>>12) & 0xf]);
        b.append(HEXCHAR[(c>>8) & 0xf]);
        b.append(HEXCHAR[(c>>4) & 0xf]);
        b.append(HEXCHAR[c & 0xf]);

      }
    }
    return b.toString();
  }
  public static String asciiToUnicode(String s) {
    if(s==null || s.indexOf("\\u")==-1) {
      return s;
    }
    int len=s.length();
    char b[]=new char[len];
    int j=0;
    for(int i=0;i<len;i++) {
      char c=s.charAt(i);
      if(c!='\\' || i==len-1) {
        b[j++]=c;
      } else {
        c=s.charAt(++i);
        if(c!='u' || i==len-1) {
          b[j++]='\\';
          b[j++]=c;
        } else {
          int k=(HEXINDEX.indexOf(s.charAt(++i))&0xf)<<12;
          k+=(HEXINDEX.indexOf(s.charAt(++i))&0xf)<<8;
          k+=(HEXINDEX.indexOf(s.charAt(++i))&0xf)<<4;
          k+=(HEXINDEX.indexOf(s.charAt(++i))&0xf);
          b[j++]=(char)k;
        }
      }
    }
    return new String(b,0,j);
  }
  public static String InputStreamToString(InputStream x) throws SQLException {
    InputStreamReader in=new InputStreamReader(x);
    StringWriter write=new StringWriter();
    int blocksize=8*1024; // todo: is this a good value?
    char buffer[]=new char[blocksize];
    try {
      while(true) {
        int l=in.read(buffer,0,blocksize);
        if(l==-1) {
          break;
        }
        write.write(buffer,0,l);
      }
      write.close();
      x.close();
    } catch(IOException e) {
      throw Trace.error(Trace.INPUTSTREAM_ERROR,e.getMessage());
    }
    return write.toString();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -