package com.softwarezealot.common.io.test; import com.common.system.SystemManager; import com.common.io.*; /** * Copyright Wynne Crisman 1999

*/ public class Test { /** * Test constructor comment. */ public Test() { super(); } public static void main(String[] args) { try { //char t = '\uAAAA'; //System.out.println("\\uAAAA\t" + ((int)t) + "\t" + 0xAAAA); printUnicode16ToUTF8HexCodes(); //System.out.println("" + (0xFFFF)); }//try// catch(Throwable e) { e.printStackTrace(); }//catch// System.exit(0); }//main()// /** * see JDK documentation (JNI section) types.doc.html. */ public static void printUnicode16ToUTF8HexCodes() { try { byte[] character = new byte[2]; char[] characters = new char[1]; int max = 0xFFFF; String UTF8 = "UTF8"; String Unicode = "Unicode"; int count = 0; StringBuffer buffer = new StringBuffer(10000); byte[] oldUtf8 = null; int loopNumber = 0; for(characters[0] = '\u0000'; characters[0] < max; characters[0]++, loopNumber++) { String str = new String(characters); byte[] utf8 = str.getBytes(UTF8); byte[] unicode16 = str.getBytes(Unicode); int intValue = (int) characters[0]; boolean isSequential = false; if((oldUtf8 != null) && (oldUtf8.length == utf8.length)) { int diffCount = 0; boolean isMoreThanOne = false; boolean nextByteMustIncrement = false; for(int index = oldUtf8.length - 1; (!isMoreThanOne) && (index >= 0); index--) { if((nextByteMustIncrement) && ((oldUtf8[index] + 1) != utf8[index])) { isMoreThanOne = true; nextByteMustIncrement = false; }//if// else if(oldUtf8[index] != utf8[index]) { diffCount++; if((oldUtf8[index] + 1) != utf8[index]) { if((oldUtf8[index] == 0xFF) && (utf8[index] == 0x00)) { nextByteMustIncrement = true; }//if// else { isMoreThanOne = true; }//else// }//if// }//else if// }//for// if((!isMoreThanOne) && (diffCount == 1)) { isSequential = true; }//if// }//if// if(!isSequential) { buffer.append(intValue); buffer.append('\t'); buffer.append(StreamSupport.getHexString(unicode16)); buffer.append('\t'); buffer.append(StreamSupport.getHexString(utf8)); buffer.append('\r'); buffer.append('\n'); if(count++ > 1000) { System.out.print(buffer); buffer.setLength(0); //com.common.debug.DebugSupport.halt(); count = 0; }//if// }//if// oldUtf8 = utf8; }//for// }//try// catch(Throwable e) { e.printStackTrace(); }//catch// }//printUnicode16ToUTF8HexCodes()// public static void test() { byte[] bytes = null; String str = "abcd\u0aaa\u8488\u0799\uffff"; //Test the java conversion.// try { long t = System.currentTimeMillis(); for(int index = 0; index < 10000; index++) { bytes = str.getBytes("UTF8"); }//for// System.out.println("Time: " + (System.currentTimeMillis() - t)); System.out.println("Before: " + str); System.out.println("After: " + (new String(bytes, "UTF8"))); System.out.println("Length: " + bytes.length); System.out.println("Bytes: " + StreamSupport.getHexString(bytes)); }//try// catch(Throwable e) { e.printStackTrace(); }//catch// //Test the software zealot conversion.// try { SystemManager.setupSystem(new com.common.system.WindowsSystem(), null, null); int length = SystemManager.getUtf8StringLength(str); bytes = new byte[length]; long t = System.currentTimeMillis(); for(int index = 0; index < 10000; index++) { com.common.system.SystemManager.convertUtf8StringToBytes(str, bytes, 0); }//for// System.out.println("Time: " + (System.currentTimeMillis() - t)); System.out.println("Before: " + str); System.out.println("After: " + (new String(bytes, "UTF8"))); System.out.println("Length: " + length); System.out.println("Bytes: " + StreamSupport.getHexString(bytes)); }//try// catch(Throwable e) { e.printStackTrace(); }//catch// //Test the software zealot conversion.// try { //SystemManager.setupSystem(new com.common.system.WindowsSystem(), null, null); int length = SystemManager.getUtf8StringLength(str); bytes = new byte[length]; long t = System.currentTimeMillis(); for(int index = 0; index < 10000; index++) { int strLength = str.length(); for(int characterIndex = 0; characterIndex < strLength; characterIndex++) { char ch = str.charAt(characterIndex); //byte upper = ch >> 8; //byte lower = ch && 0xFF; if(ch == 0) { }//if// else if(ch < 0x7F) { }//else if// else if(ch < 0xFFFF) { }//else if// else { }//else// }//for// }//for// System.out.println("Time: " + (System.currentTimeMillis() - t)); System.out.println("Before: " + str); System.out.println("After: " + (new String(bytes, "UTF8"))); System.out.println("Length: " + length); System.out.println("Bytes: " + StreamSupport.getHexString(bytes)); }//try// catch(Throwable e) { e.printStackTrace(); }//catch// System.exit(0); }//main()// }