java将字符串转换为指定编码的16进制字符串,将该16进制字符串转换为byte数组

最近开发任务是和摄像机彩屏进行通讯。在进行串口通讯时需要传输byte数组,而当内容为中文时需要指定GBK编码,否则会乱码。所以总结下这两个java方法。

 1     /**
 2      * 将字符串转为指定编码的16进制
 3      *
 4      * @param str
 5      * @return
 6      */
 7     public static String encode(String str) throws Exception {
 8         String hexString = "0123456789ABCDEF";
 9         //根据编码获取字节数组
10         byte[] bytes = str.getBytes("GBK");
11         StringBuilder sb = new StringBuilder(bytes.length * 2);
12         //将字节数组中每个字节拆解成2位16进制整数
13         for (int i = 0; i < bytes.length; i++) {
14             sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
15             sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
16         }
17         return sb.toString();
18     }
 1     /**
 2      * 将16进制字符串转换为byte[]
 3      *
 4      * @param str
 5      * @return
 6      */
 7     public static byte[] toBytes(String str) {
 8         if (str == null || str.trim().equals("")) {
 9             return new byte[0];
10         }
11 
12         byte[] bytes = new byte[str.length() / 2];
13         for (int i = 0; i < str.length() / 2; i++) {
14             String subStr = str.substring(i * 2, i * 2 + 2);
15             bytes[i] = (byte) Integer.parseInt(subStr, 16);
16         }
17 
18         return bytes;
19     }

 

posted @ 2018-06-28 10:10  派小星  阅读(3684)  评论(0编辑  收藏  举报