import java.io.ByteArrayOutputStream; /** * Created by Administrator on 2016/2/2. * -----------16進制和字符串互轉--------- * ------------解決中文亂碼問題--------- */ public class StringToSixthUtils { private static String hexString = "0123456789abcdef"; /* * 將字符串編碼成16進制數字,適用於所有字符(包括中文) */ public static String encode(String str) { //根據默認編碼獲取字節數組 byte[] bytes = str.getBytes(); StringBuilder sb = new StringBuilder(bytes.length * 2); //將字節數組中每個字節拆解成2位16進制整數 for (int i = 0; i < bytes.length; i++) { sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4)); sb.append(hexString.charAt((bytes[i] & 0x0f))); } return sb.toString(); } /* * 將16進制數字解碼成字符串,適用於所有字符(包括中文) */ public static String decode(String bytes) { ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2); //將每2位16進制整數組裝成一個字節 for (int i = 0; i < bytes.length(); i += 2) baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString.indexOf(bytes.charAt(i + 1)))); return new String(baos.toByteArray()); } }
