📄 chexencoder.java
字号:
public class CHEXEncoder {
//Forbid create instance
private CHEXEncoder() {
//do nothing
}
/*
* Convert bytes to hex digits
*/
public static String encode(byte[] data) {
if (data == null)
return null;
else
return encode(data, 0, data.length);
}
public static String encode(/*const*/byte[] data, int off, int len) {
char[] ch;
int i;
int b;
int d;
ch = new char[data.length << 1]; //*2 size
i = 0;
while (len-- > 0) {
// Convert next byte into a hex digit pair
b = data[off++] & 0xFF;
d = b >> 4;
d = (d < 0xA ? d + '0' : d - 0xA + 'A');
ch[i++] = (char) d;
d = b & 0xF;
d = (d < 0xA ? d + '0' : d - 0xA + 'A');
ch[i++] = (char) d;
}
return (new String(ch));
}
public static byte[] decode(String src) {
if (src == null)
return null;
String usrc = src.toUpperCase();
byte[] buf = new byte[usrc.length() >> 1];
int b;
char t;
for (int i = 0; i < buf.length; i++) {
t = usrc.charAt(i + i);
if (t <= '9')
b = t - '0';
else
b = t - 'A' + 10;
b <<= 4;
t = usrc.charAt(i + i + 1);
if (t <= '9')
b += t - '0';
else
b += t - 'A' + 10;
buf[i] = (byte) b;
}
return buf;
}
static public void main(String[] args) {
String s = "32333936375F305F32333939345F32333936375F305F32333939355F32333936385F305F3234303037";
s = new String(decode(s));
System.out.println(s);
try {
s = "8d634e1c53174f9b75355c40";
s = new String(decode(s), "UTF-16");
System.out.println(s);
} catch (Throwable t) {
t.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -