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) { 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) { String str = null; if (byteArray != null && byteArray.length > 0) { StringBuffer stringBuffer = new StringBuffer(byteArray.length); for (byte byteChar : byteArray) { stringBuffer.append(String.format("%02X", byteChar)); } str = stringBuffer.toString(); } return str; }
//下面該方法等同于Integer.toBinaryString(b)
public static String byte2bits(byte b) { int z = b; z |= 256; String str = Integer.toBinaryString(z); int len = str.length(); return str.substring(len - 8, len); }
//将二進制字元串轉換回位元組
public static byte bit2byte(String bString){ byte result=0; for(int i=bString.length()-1,j=0;i>=0;i--,j++){ result+=(Byte.parseByte(bString.charAt(i)+"")*Math.pow(2, j)); } return result; }