频道栏目
首页 > 资讯 > 其他综合 > 正文

16进制转换字节数组工具类

14-06-20        来源:[db:作者]  
收藏   我要投稿
public class StringUtil {
	public static String str = "696d706f7274";

	public static void main(String[] args) {
		System.out.println(new String(getBytes(str)));
	}

	public static boolean isOdd(String str) {
		int length = str.length();
		int isOdd = length % 2;
		if (isOdd == 0)
			return false;
		else
			return true;
	}

	public static byte[] getBytes(String str) {
		boolean isOdd = isOdd(str);
		int size = str.length();
		if (isOdd) {
			byte[] byteOdd = new byte[size / 2 + 1];
			for (int j = 0, i = 0; i < str.length() - 1; i++) {
				if (i % 2 == 0) {
					byte a = getByteFromChar(str.charAt(i));
					byte b = getByteFromChar(str.charAt(++i));
					byteOdd[j++] = (byte) (a * 16 + b);
				}

			}
			byteOdd[size / 2] = (byte) str.charAt(str.length() - 1);
			return byteOdd;
		} else {
			byte[] byteEven = new byte[size / 2];
			for (int j = 0, i = 0; i < str.length(); i++) {
				if (i % 2 == 0) {
					byte a = getByteFromChar(str.charAt(i));
					byte b = getByteFromChar(str.charAt(++i));
					byteEven[j++] = (byte) (a * 16 + b);
				}

			}
			return byteEven;
		}

	}

	public static byte getByteFromChar(char c) {
		if (c == '0') {
			return 0;
		} else if (c == '1') {
			return 1;
		} else if (c == '2') {
			return 2;
		} else if (c == '3') {
			return 3;
		} else if (c == '4') {
			return 4;
		} else if (c == '5') {
			return 5;
		} else if (c == '6') {
			return 6;
		} else if (c == '7') {
			return 7;
		} else if (c == '8') {
			return 8;
		} else if (c == '9') {
			return 9;
		} else if (c == 'a') {
			return 10;
		} else if (c == 'b') {
			return 11;
		} else if (c == 'c') {
			return 12;
		} else if (c == 'd') {
			return 13;
		} else if (c == 'e') {
			return 14;
		} else if (c == 'f') {
			return 15;
		}
		return -1;
	}

}


相关TAG标签
上一篇:台积电:绝大多数7nm客户都会转向6nm_IT新闻_博客园
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站