📄 test.java
字号:
import java.io.UnsupportedEncodingException;
public class Test {
public Test() {}
public static final String HexCode[] = {
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F"
};
public static final String OctalCode[] = {
"0", "1", "2", "3", "4", "5", "6", "7"
};
///十进制转十六进制字符串: HexCode[i/16]+HexCode[i%16]
///java的byte范围: -127到128,所以小于0时,需要加256.
public static final String byteToHexString(byte b){
int i = (int)b;
if(i<0) i= i+256;
return HexCode[i/16]+HexCode[i%16];
}
///十六进制字符串转十进制: 1F(16进制) = 1*16+15(十进制)
///java的byte范围: -127到128,所以不用Byte.parseByte,会因数据过大而出错,如FF时大于128就会出错
public static final int hexStringToInt(String hex){
if(hex==null) return -1;
return Integer.parseInt(hex,16);
}
public static byte[] hexStringToByteArray(String hex){
if (hex==null) return null;
byte[] result = new byte[hex.length()/2];
for(int i=0; i<result.length; ++i) {
int x = Integer.parseInt(hex.substring(i*2,i*2+2),16);
result[i] = x<=127 ? (byte)x : (byte)(x-256);
}
return result;
}
public static String byteArrayToHexString(byte[] data){
if(data==null) return null;
String hex = "";
for(int i = 0; i < data.length; i++) hex = hex + byteToHexString(data[i]);
return hex;
}
///十进制转八进制字符串
///java的byte范围: -127到128.,所以小于0时,需要加256.
//String octal1,octal2,octal3;//octal3 = OctalCode[i%8]; octal2 = OctalCode[(i/8)%8]; octal1 = OctalCode[(i/8)/8];
public static final String byteToOctalString(byte b){
int i = (int)b;
if(i<0) i= i+256;
return OctalCode[(i/8)/8]+OctalCode[(i/8)%8]+OctalCode[i%8];
}
///八进制字符串转十进制: 377(8进制) = ((3*8+7)*8+7)(十进制)
///java的byte范围: -127到128,,所以不用Byte.parseByte,会因数据过大而出错,如377时大于128就会出错.
public static final int octalStringToInt(String octal){
if (octal==null) return -1;
return Integer.parseInt(octal,8);
}
////unicode编码: 00550054004600310036004200456D4B8BD5 对应汉字为 UTF16BE测试
public static String parseUTF16BE(byte[] data){
if(data==null) return null;
String unicode = null;
try {
unicode = new String(data,"UTF-16BE");
//unicode = new String(data,"UTF-16"); //UTF-16BE 等价于 UTF-16
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return unicode;
}
////unicode编码:UTF16BE测试 对应为 00550054004600310036004200456D4B8BD5
public static byte[] getUTF16BE(String unicode){
if(unicode==null) return null;
byte b[] = null;
try {
b = unicode.getBytes("UTF-16BE");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return b;
}
////////ASCII编码:303730383039对应的数字为 070809
public static String parseASCII(byte[] data){
if(data==null) return null;
String ascii = null;
try {
ascii= new String(data,"UTF-8");
//ascii = new String(data,"ASCII"); //UTF-8 等价于 ASCII
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return ascii;
}
////ASCII编码:070809 对应为 303730383039
public static byte[] getASCII(String ascii){
if(ascii==null) return null;
byte b[] = null;
try {
b = ascii.getBytes("UTF-8");
//b = ascii.getBytes("ASCII");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return b;
}
////GB2312编码:474232333132B2E2CAD4 对应为 GB2312测试
public static String parseGB2312(byte[] data) {
if(data==null) return null;
String gb2312 = null;
try {
gb2312 = new String(data,"gb2312");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return gb2312;
}
////GB2312编码:GB2312测试 对应为 474232333132B2E2CAD4
public static byte[] getGB2312(String gb2312) {
if(gb2312==null) return null;
byte[] b = null;
try {
b = gb2312.getBytes("gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return b;
}
public static void main(String args[]) throws UnsupportedEncodingException{
System.out.println(byteToHexString((byte)(-1)));//打印出 FF
System.out.println(hexStringToInt("FF")); //打印出 255
System.out.println(byteToOctalString((byte)(-1))); //打印出 377
System.out.println(octalStringToInt("377")); //打印出 255
/////编码
System.out.println(parseUTF16BE(hexStringToByteArray("00550054004600310036004200456D4B8BD5"))); //打印出 UTF16BE测试
System.out.println(parseASCII(hexStringToByteArray("303730383039"))); //打印出 070809
System.out.println(parseGB2312(hexStringToByteArray("474232333132B2E2CAD4"))); //打印出 GB2312测试
/////解码
byte[] unicodeB = getUTF16BE("UTF16BE测试");
System.out.println(byteArrayToHexString(unicodeB)); //打印出:00550054004600310036004200456D4B8BD5
for(int i=0;i<unicodeB.length;i++){
System.out.println(byteToHexString(unicodeB[i])); //分别打印出 00 55 00 54 00 46 00 31 00 36 00 42 00 45 6D 4B 8B D5
}
byte[] asciiB = getASCII("070809");
System.out.println(byteArrayToHexString(asciiB));//打印出:303730383039
for(int i=0;i<asciiB.length;i++){
System.out.println(byteToHexString(asciiB[i])); //分别打印出 30 37 30 38 30 39
}
byte gb2312B[] = getGB2312("GB2312测试"); //打印出:474232333132B2E2CAD4
System.out.println(byteArrayToHexString(gb2312B));
for(int i=0;i<gb2312B.length;i++){
System.out.println(byteToHexString(gb2312B[i])); //分别打印出 47 42 32 33 31 32 B2 E2 CA D4
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -