Java十六进制字符串转换说明

 

字符串的转换

 

 

变量在内存中的数据

 

 

 

 

Java代码

 1 package com.example;
 2 
 3 import java.nio.charset.StandardCharsets;
 4 
 5 public class HelloWorld {
 6     public static void main(String[] args) {
 7 
 8         String var_str = "68656C6C6F776F726C64";
 9 
10         //以字符串方式打印var_str中的内容
11         System.out.println("1.以字符串方式打印var_str中的内容,var_str:");
12         System.out.format("%s",var_str);
13         System.out.println();System.out.println();
14 
15         //十六进制字符串转成十六进制字节数组, 两者在内存中的数据不同
16         System.out.println("2.十六进制字符串转成十六进制字节数组, 两者在内存中的数据不同,res:");
17         byte[] res = hexString2Bytes(var_str);
18         for(int i=0;i<res.length;i++) {
19             System.out.format("%02X ",res[i]);
20         }
21         System.out.println();System.out.println();
22 
23         //十六进制字符串使用十六进制字节数据编码,两者在内存中的数据相同
24         System.out.println("3.十六进制字符串使用十六进制字节数据编码,两者在内存中的数据相同,res2=var_str.getBytes():");
25         byte[] res2 = var_str.getBytes();
26         for(int i=0;i<res2.length;i++) {
27             System.out.format("%02X ",res2[i]);
28         }
29         System.out.println();System.out.println();
30 
31         //将字符串转换成16进制字符串,两者在内存中的数据不同
32         System.out.println("4.字符串转换成16进制字符串,两者在内存中的数据不同,res3:");
33         String res3 = strTo16(var_str);
34         System.out.format("%s",res3);
35         System.out.println();System.out.println();
36 
37     }
38 
39 
40 
41     /**
42      * 十六进制字符串转十六进制字节数组
43      * */
44     private static byte charToByte(char c) {
45         return (byte) "0123456789ABCDEF".indexOf(c);
46     }
47     public static byte[] hexString2Bytes(String hex) {
48         if ((hex == null) || (hex.equals(""))){
49             return null;
50         }
51         else if (hex.length()%2 != 0){
52             return null;
53         }
54         else{
55             hex = hex.toUpperCase();
56             int len = hex.length()/2;
57             byte[] b = new byte[len];
58             char[] hc = hex.toCharArray();
59             for (int i=0; i<len; i++){
60                 int p=2*i;
61                 b[i] = (byte) (charToByte(hc[p]) << 4 | charToByte(hc[p+1]));
62             }
63             return b;
64         }
65     }
66 
67     public static String strTo16(String s){
68         String str="";
69         for(int i=0;i<s.length();i++) {
70             int ch = (int)s.charAt(i);
71             String s4 = Integer.toHexString(ch);
72             str = str + s4;
73         }
74         return str;
75     }
76 
77 }
HelloWorld.java

 

posted @ 2021-01-27 09:17  doitjust  阅读(496)  评论(0编辑  收藏  举报