zoukankan      html  css  js  c++  java
  • string字符串转成16进制

    package util;
    
    public class EscapeUnescape {
    	public static String escape(String src) {
    		int i;
    		char j;
    		StringBuffer tmp = new StringBuffer();
    		tmp.ensureCapacity(src.length() * 6);
    		for (i = 0; i < src.length(); i++) {
    			j = src.charAt(i);
    			if (Character.isDigit(j) || Character.isLowerCase(j)
    					|| Character.isUpperCase(j))
    				tmp.append(j);
    			else if (j < 256) {
    				tmp.append("%");
    				if (j < 16)
    					tmp.append("0");
    				tmp.append(Integer.toString(j, 16));
    			} else {
    				tmp.append("%u");
    				tmp.append(Integer.toString(j, 16));
    			}
    		}
    		return tmp.toString();
    	}
    
    	public static String unescape(String src) {
    		StringBuffer tmp = new StringBuffer();
    		tmp.ensureCapacity(src.length());
    		int lastPos = 0, pos = 0;
    		char ch;
    		while (lastPos < src.length()) {
    			pos = src.indexOf("%", lastPos);
    			if (pos == lastPos) {
    				if (src.charAt(pos + 1) == 'u') {
    					ch = (char) Integer.parseInt(src
    							.substring(pos + 2, pos + 6), 16);
    					tmp.append(ch);
    					lastPos = pos + 6;
    				} else {
    					ch = (char) Integer.parseInt(src
    							.substring(pos + 1, pos + 3), 16);
    					tmp.append(ch);
    					lastPos = pos + 3;
    				}
    			} else {
    				if (pos == -1) {
    					tmp.append(src.substring(lastPos));
    					lastPos = src.length();
    				} else {
    					tmp.append(src.substring(lastPos, pos));
    					lastPos = pos;
    				}
    			}
    		}
    		return tmp.toString();
    	}
    
    	public static void main(String[] args) {
    		String tmp = "~!@#$%^&*()_+|\=-,./?><;'][{}"";
    		System.out.println("testing escape : " + tmp);
    		tmp = escape(tmp);
    		System.out.println(tmp);
    		System.out.println("testing unescape :" + tmp);
    		System.out.println(unescape(tmp));
    	}
    }
    

      貌似有问题 待改进

  • 相关阅读:
    日志
    设置和开启定时器
    缓存管理
    计算机程序员能做多久,这个行业有年龄限制吗?
    程序员都是怎么工作的?
    做程序员怎么样?
    javascript中this关键字
    1003. 二哥养细菌—java
    1002. 二哥种花生——java
    this与static
  • 原文地址:https://www.cnblogs.com/a757956132/p/4609397.html
Copyright © 2011-2022 走看看