java中字節數組byte[]和字符(字符串)之間的轉換


轉自:http://blog.csdn.net/linlzk/article/details/6566124

Java與其他語言編寫的程序進行tcp/ip socket通訊時,通訊內容一般都轉換成byte數組型,java在字符與數組轉換也是非常方便的;

 

1、將字符轉換成byte數組

     String  str = "羅長";
     byte[] sb = str.getBytes();

 

2、將byte數組轉換成字符

     byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9}; 
     String str= new String (b);

 

3、為了方便字符的加減操作,通常以16進制字符替代普通字符與byte數組進行相互轉換

 /**
  * 16進制的字符串表示轉成字節數組
  *
  * @param hexString
  *            16進制格式的字符串
  * @return 轉換后的字節數組
  **/
 public static byte[] toByteArray(String hexString) {
  if (StringUtils.isEmpty(hexString))
   throw new IllegalArgumentException("this hexString must not be empty");
 
  hexString = hexString.toLowerCase();
  final byte[] byteArray = new byte[hexString.length() / 2];
  int k = 0;
  for (int i = 0; i < byteArray.length; i++) {//因為是16進制,最多只會占用4位,轉換成字節需要兩個16進制的字符,高位在先
   byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff);
   byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff);
   byteArray[i] = (byte) (high << 4 | low);
   k += 2;
  }
  return byteArray;
 }
 
 /**
  * 字節數組轉成16進制表示格式的字符串
  *
  * @param byteArray
  *            需要轉換的字節數組
  * @return 16進制表示格式的字符串
  **/
 public static String toHexString(byte[] byteArray) {
  if (byteArray == null || byteArray.length < 1)
   throw new IllegalArgumentException("this byteArray must not be null or empty");
 
  final StringBuilder hexString = new StringBuilder();
  for (int i = 0; i < byteArray.length; i++) {
   if ((byteArray[i] & 0xff) < 0x10)//0~F前面不零
    hexString.append("0");
   hexString.append(Integer.toHexString(0xFF & byteArray[i]));
  }
  return hexString.toString().toLowerCase();
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM