java中字符窜与16进制,byte之间的转换

/**
* java String 与各种进制字符之间的转换
* @author
*/
  public class Coding {
  
     /**
      * 字符串转换成十六进制值
      * @param bin String 我们看到的要转换成十六进制的字符串
      * @return 
      */
     public static String bin2hex(String bin) {
         char [] digital = "0123456789ABCDEF" .toCharArray();
         StringBuffer sb = new StringBuffer( "" );
         byte [] bs = bin.getBytes();
         int bit;
         for ( int i = 0 ; i < bs.length; i++) {
             bit = (bs[i] & 0x0f0 ) >> 4 ;
             sb.append(digital[bit]);
             bit = bs[i] & 0x0f ;
             sb.append(digital[bit]);
         }
         return sb.toString();
     }
  
     /**
      * 十六进制转换字符串
      * @param hex String 十六进制
      * @return String 转换后的字符串
      */
     public static String hex2bin(String hex) {
         String digital = "0123456789ABCDEF" ;
         char [] hex2char = hex.toCharArray();
         byte [] bytes = new byte [hex.length() / 2 ];
         int temp;
         for ( int i = 0 ; i < bytes.length; i++) {
             temp = digital.indexOf(hex2char[ 2 * i]) * 16 ;
             temp += digital.indexOf(hex2char[ 2 * i + 1 ]);
             bytes[i] = ( byte ) (temp & 0xff );
         }
         return new String(bytes);
     }
  
     /** 
      * java字节码转字符串 
      * @param b 
      * @return 
      */
     public static String byte2hex( byte [] b) { //一个字节的数,
         // 转成16进制字符串
         String hs = "" ;
         String tmp = "" ;
         for ( int n = 0 ; n < b.length; n++) {
             //整数转成十六进制表示
             tmp = (java.lang.Integer.toHexString(b[n] & 0XFF ));
             if (tmp.length() == 1 ) {
                 hs = hs + "0" + tmp;
             } else {
                 hs = hs + tmp;
             }
         }
         tmp = null ;
         return hs.toUpperCase(); //转成大写
     }
  
     /**
      * 字符串转java字节码
      * @param b
      * @return
      */
     public static byte [] hex2byte( byte [] b) {
         if ((b.length % 2 ) != 0 ) {
             throw new IllegalArgumentException( "长度不是偶数" );
         }
         byte [] b2 = new byte [b.length / 2 ];
         for ( int n = 0 ; n < b.length; n += 2 ) {
             String item = new String(b, n, 2 );
             // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
             b2[n / 2 ] = ( byte ) Integer.parseInt(item, 16 );
         }
         b = null ;
         return b2;
     }
  
     public static void main(String[] args) {
         String content = "EDF%&^%#_|~" ;
         System.out.println(bin2hex(content));
         System.out.println(hex2bin(bin2hex(content)));
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值