//汉字转化为16进制 String strInput ="湖北武汉"; StringBuffer output = new StringBuffer(); System.out.println("\""+strInput+ "\" 的utf8编码:"); for (int i = 0; i < strInput.length(); i++) { output.append("\\u" +Integer.toString(strInput.charAt(i), 16)); } System.out.println(output);//输出结果为:\u6e56\u5317\u6b66\u6c49 //16进制转换成汉字 String str="\u6e56\u5317\u6b66\u6c49";//这个16进制的汉字为“湖北武汉” //根据默认编码获取字节数组 byte[] bytes=str.getBytes(); StringBuilder sb=new StringBuilder(bytes.length*2); //将字节数组中每个字节拆解成2位16进制整数 for(int i=0;i<bytes.length;i++){ sb.append(hexString.charAt((bytes[i]&0xf0)>>4)); sb.append(hexString.charAt((bytes[i]&0x0f)>>0)); } System.out.println(sb.toString()+"-------------" ); //输出结果为: E6B996E58C97E6ADA6E6B189------------- System.out.println(decode(sb.toString())+"************");//输出结果为:湖北武汉************ public static String decode(String bytes) { ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2); //将每2位16进制整数组装成一个字节 for(int i=0;i<bytes.length();i+=2) baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1)))); String bb = ""; try { bb = new String(baos.toByteArray(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } return bb; }
Android中汉字和16进制数的转化
最新推荐文章于 2024-08-21 03:44:15 发布