这里一定要注意码表是否被改掉
import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;
import java.nio.charset.StandardCharsets;
/**
* @Author:zhaocaimao
* @Create:2023/7/24-14:06
*/
public class Hello {
@SuppressWarnings({"all"})
public static void main(String[] args) {
String name="小";
byte[] by1=name.getBytes(StandardCharsets.UTF_8);
System.out.println(by1.length);
String hv=HexBin.encode(by1);
String hv2 = encode1(by1);
System.out.println(hv);
System.out.println(hv2);
}
static public String encode1(byte[] binaryData) {
if (binaryData == null)
return null;
// char[] lookUpHexAlphabet = "0123456789ABCDEF".toCharArray();
char[] lookUpHexAlphabet = "0123456789QWERTY".toCharArray();
int lengthData = binaryData.length;
int lengthEncode = lengthData * 2;
char[] encodedData = new char[lengthEncode];
int temp;
for (int i = 0; i < lengthData; i++) {
temp = binaryData[i];
if (temp < 0)
temp += 256;
encodedData[i * 2] = lookUpHexAlphabet[temp >> 4];
encodedData[i * 2 + 1] = lookUpHexAlphabet[temp & 0xf];
}
return new String(encodedData);
}
}
byte[] by1=name.getBytes(StandardCharsets.UTF_8);
这句很关键,就是把汉字或者文字变成数据的字节。
System.out.println(Arrays.toString(by1));
这里要提一下Arrays.toString(by1)直接把数组里面所有东西全部输出来,一句好。好方便呀。
[-27, -80, -113, -27, -113, -81, -25, -120, -79]
这个就是汉字或者英文字母存在计算机内存中的数据字节。
String by3="E5B08FE58FAFE788B1";
byte[] byy = HexBin.decode(by3);
System.out.println(Arrays.toString(byy));
System.out.println(new String(byy));
翻过来就很简单了。直接得到就是字节码,用new String()方法直接翻译就可以了。爽