Android 16進位制轉換工具類
摘要:/**
* author:wiki on 2018/12/12
* email:zhengweiqunemail@qq.com
*/
public class ConvertUtil {
/**
* 16進位制字串轉化為字母ASCALL碼
*
* @pa...
/** * author:wiki on 2018/12/12 * email:zhengweiqunemail@qq.com */ public class ConvertUtil { /** * 16進位制字串轉化為字母ASCALL碼 * * @param hex 要轉化的16進位制數,用空格隔開 *如:53 68 61 64 6f 77 * @return ASCALL碼 */ public static String convertHexToAsCall(String hex) { StringBuilder sb = new StringBuilder(); String[] split = hex.split(" "); for (String str : split) { int i = Integer.parseInt(str, 16); if (i < 0x20 || i == 0x7F) {//過濾特殊字元 continue; } sb.append((char) i); } return sb.toString(); } /** * 16進位制陣列轉String * * @param data byte陣列 * @return string */ public static String formatHex2String(byte[] data) { final StringBuilder stringBuilder = new StringBuilder(data.length); for (byte byteChar : data) stringBuilder.append(String.format("%02X ", byteChar)); return stringBuilder.toString(); } /** * 16進位制字串轉換為Byte值 * * @param src Byte字串,每個Byte之間沒有分隔符,eg:616C6B * @return byte[] */ public static byte[] hexStr2Bytes(String src) { int m = 0, n = 0; int l = src.length() / 2; System.out.println(l); byte[] ret = new byte[l]; for (int i = 0; i < l; i++) { m = i * 2 + 1; n = m + 1; ret[i] = Byte.decode("0x" + src.substring(i * 2, m) + src.substring(m, n)); } return ret; } /** * 字串轉換成十六進位制字串 * * @param str 待轉換的ASCII字串 * @return String 每個Byte之間沒有分隔,如: [616C6B] */ public static String str2HexStr(String str) { char[] chars = "0123456789ABCDEF".toCharArray(); StringBuilder sb = new StringBuilder(""); byte[] bs = str.getBytes(); int bit; for (int i = 0; i < bs.length; i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append(chars[bit]); bit = bs[i] & 0x0f; sb.append(chars[bit]); //sb.append(' '); } return sb.toString().trim(); } }