将字符串编码成16进制数字,将16进制数字解码成字符串

 /**
 *
 */
package a;
import java.io.*;
/**
 * @author jinpengai
 *
 */
public class b {
 /*
  * 16进制数字字符集
  */
 private static String hexString = "0123456789ABCDEF";

 /*
  * 将字符串编码成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());
 }

 public static String byte2Hex(String a) {
    byte[] b=a.getBytes();
    String c="";
    for(int i=0;i<b.length;i++){
     c+= ("" + "0123456789ABCDEF".charAt(0xf & b[i] >> 4) +
                  "0123456789ABCDEF".charAt(b[i] & 0xf));
    }
        return c;
     }

  /**
  * @param args  //luoaiming.xc => 6C756F61696D696E672E7863
    */
 public static void main(String[] args) {
  System.out.println(encode("jinpengai.xc"));
  System.out.println(decode("6A696E70656E6761692E7863"));
  System.out.print(s.byte2Hex("luoaiming.xc"));
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值