你的位置: iPc 首页 > 全部文章 > 编程技术 > 阅读文章
科学X网    Office    苹果中国    微软中国    VPS

Java的十六进制与字符串之间互相转换函数(16进制与String转换)

30
七月

Java下 16进制 与 字符串 的相互转换函数

package com.nantian.iclient.atm.sdb;

public class Util {
  public Util() {
  }

  /**
   * 将指定byte数组以16进制的形式打印到控制台
   * @param hint String
   * @param b byte[]
   * @return void
   */
  public static void printHexString(String hint, byte[] b) {
    System.out.print(hint);
    for (int i = 0; i < b.length; i++) {
      String hex = Integer.toHexString(b[i] & 0xFF);
      if (hex.length() == 1) {
        hex = ‘0’ + hex;
      }
      System.out.print(hex.toUpperCase() + " ");
    }
    System.out.println("");
  }

  /**
   *
   * @param b byte[]
   * @return String
   */
  public static String Bytes2HexString(byte[] b) {
    String ret = "";
    for (int i = 0; i < b.length; i++) {
      String hex = Integer.toHexString(b[i] & 0xFF);
      if (hex.length() == 1) {
        hex = ‘0’ + hex;
      }
      ret += hex.toUpperCase();
    }
    return ret;
  }

  /**
   * 将两个ASCII字符合成一个字节;
   * 如:"EF"–> 0xEF
   * @param src0 byte
   * @param src1 byte
   * @return byte
   */
  public static byte uniteBytes(byte src0, byte src1) {
    byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue();
    _b0 = (byte)(_b0 << 4);
    byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue();
    byte ret = (byte)(_b0 ^ _b1);
    return ret;
  }

  /**
   * 将指定字符串src,以每两个字符分割转换为16进制形式
   * 如:"2B44EFD9" –> byte[]{0x2B, 0x44, 0xEF, 0xD9}
   * @param src String
   * @return byte[]
   */
  public static byte[] HexString2Bytes(String src){
    byte[] ret = new byte[8];
    byte[] tmp = src.getBytes();
    for(int i=0; i<8; i++){
      ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
    }
    return ret;
  }

}

关于本文
  • 属于分类:编程技术
  • 本文标签:,
  • 文章编辑:
  • 流行热度:正在感受现场气氛...
  • 生产日期:2007年07月30日 - 15时48分00秒
各种回音
  1. 说: 回复他/她

    package com.nantian.iclient ?
    前辈?!!

微博评论箱