/** * 16进制相关操作 * * @author chenxin * @version [版本号, 2012-5-21] * @see [相关类/方法] * @since [产品/模块版本] */ public class 16Util { private static final char[] HEX = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; /** * 返回int的16进制表示 * * @param l 传进的长整数 * @return 传进参数的16进制字符串表示 */ public static String getHexStr(long l) { StringBuffer sbRst = new StringBuffer(20); int idx = (int) ((l & 0xF000000000000000L) >> 60); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x0F00000000000000L) >> 56); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x00F0000000000000L) >> 52); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x000F000000000000L) >> 48); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x0000F00000000000L) >> 44); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x00000F0000000000L) >> 40); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x000000F000000000L) >> 36); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x0000000F00000000L) >> 32); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x00000000F0000000L) >> 28); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x000000000F000000L) >> 24); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x0000000000F00000L) >> 20); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x00000000000F0000L) >> 16); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x000000000000F000L) >> 12); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x0000000000000F00L) >> 8); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) ((l & 0x00000000000000F0L) >> 4); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (int) (l & 0x000000000000000FL); idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); return sbRst.toString(); } /** * 返回int的16进制表示 * * @param i 传进的整数 * @return 传进参数的16进制字符串表示 */ public static String getHexStr(int i) { StringBuffer sbRst = new StringBuffer(10); int idx = (i & 0xF0000000) >> 28; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x0F000000) >> 24; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x00F00000) >> 20; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x000F0000) >> 16; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x0000F000) >> 12; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x00000F00) >> 8; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (i & 0x000000F0) >> 4; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = i & 0x0000000F; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); return sbRst.toString(); } /** * 返回Short的16进制表示 * * @param s 传进的短整形 * @return 传进参数的16进制字符串表示 */ public static String getHexStr(short s) { StringBuffer sbRst = new StringBuffer(6); int idx = (s & 0xF000) >> 12; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (s & 0x0F00) >> 8; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = (s & 0x00F0) >> 4; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = s & 0x000F; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); return sbRst.toString(); } /** * 返回字节的16进制表示 * * @param pByte 传进的字节 * @return 传进参数的16进制字符串表示 */ public static String getHexStr(byte pByte) { StringBuffer sbRst = new StringBuffer(4); int idx = (pByte & 0xF0) >> 4; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[idx]); idx = pByte & 0x0F; idx = idx < 0 ? idx + 16 : idx; sbRst.append(HEX[pByte & 0x0F]); return sbRst.toString(); } }
16进制相关操作
开发者博客:http://www.developsearch.com
猜你喜欢
转载自keepwork.iteye.com/blog/1539953
今日推荐
周排行