首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

16进制跟字符串(包括中文)之间的相互转化

2012-12-21 
16进制和字符串(包括中文)之间的相互转化本帖来源http://gufenglian.iteye.com/blog/348282package com.ld

16进制和字符串(包括中文)之间的相互转化
本帖来源http://gufenglian.iteye.com/blog/348282

package com.ldl.dsa;import java.io.ByteArrayOutputStream;/** * Description  字符串(包含中文)和16进制之间的转换 */public class CodeChange { /** * 16进制数字字符集 */ private static String hexString="0123456789ABCDEF";   public static void main(String[] args) {  System.out.println(toStringHex("41")); }  /**  * 转化字符串为十六进制编码  */ public static String toHexString(String s){    String str="";    for (int i=0;i<s.length();i++){     int ch = (int)s.charAt(i);     String s4 = Integer.toHexString(ch);     str = str + s4;  }    return str;   } /**  * 转化十六进制编码为字符串  */ public static String toStringHex(String s){  byte[] baKeyword = new byte[s.length()/2];  for(int i = 0; i < baKeyword.length; i++){   try{    baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));   }catch(Exception e){    e.printStackTrace();   }  }  try{   s = new String(baKeyword, "utf-8");//UTF-16le:Not  }catch (Exception e1){   e1.printStackTrace();  }  return s; } /**  * 将字符串编码成16进制数字,适用于所有字符(包括中文)  */ public static String encode(String str){  //根据默认编码获取字节数组  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));  }  return sb.toString(); } /**  * 将16进制数字解码成字符串,适用于所有字符(包括中文)  */ 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))));  return new String(baos.toByteArray()); }}

热点排行