package org.aperteworkflow.editor.processeditor.tab.message; public class Native2AsciiUtil { /** * Encode the native format to the ASCII string with * * @param input * @return */ public static String native2Ascii(String input) { if (input == null) { return null; } StringBuilder builder = new StringBuilder(input.length() + 60); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c <= 126) { builder.append(c); } else { builder.append("\\u"); String hex = Integer.toHexString(c); for (int j = hex.length(); j < 4; j++) { builder.append('0'); } builder.append(hex); } } return builder.toString(); } /** * Decode the ASCII string to the native format * * @param input ASCII input * @return String in native format */ public static String ascii2Native(String input) { if (input == null) { return null; } StringBuilder builder = new StringBuilder(input.length()); boolean precedingBackslash = false; for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (precedingBackslash) { switch (c) { case 'f': c = '\f'; break; case 'n': c = '\n'; break; case 'r': c = '\r'; break; case 't': c = '\t'; break; case 'u': String hex = input.substring(i + 1, i + 5); c = (char) Integer.parseInt(hex, 16); i += 4; break; } precedingBackslash = false; } else { precedingBackslash = (c == '\\'); } if (!precedingBackslash) { builder.append(c); } } return builder.toString(); } }