轉自: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();
}