编码原理介绍(中文编码杂谈):
http://www.searchtb.com/2012/04/chinese_encode.html
int -> byte
可以直接使用强制类型转换: byte b = (byte) aInt;
这个操作是直接截取int中最低一个字节,如果int大于255,则值就会变得面目全非了
byte -> int
这里有两种情况,一种是要求保持值不变,例如进行数值计算,可采用强制类型转换:int i = (int) aByte;
另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,
则需要采用位操作(只要后8位):int i = b & 0xff;
/**采用UTF-8编码**/
public static void main(String[] args) {
print("中");
System.out.println("16进制转int进制:" + Integer.parseInt("E4", 16));
System.out.println("16进制转byte进制:" + (byte) 0xE4);
System.out.println("int转byte进制:" + (byte) 228);
System.out.println("byte进制转int进制:" + (-28 & 0xff));
}
/**字符转换为十进制数字**/
public static void print(String str) {
if(str == null || str.equals("")) return;
byte[] test = str.getBytes();
String result = "";
for (byte b : test) {
result += "," + (b & 0xff);
}
System.out.println(result.substring(1));
}
运行结果:
228,184,173
16进制转int进制:228
16进制转byte进制:-28
int进制转byte进制:-28
byte进制转int进制:228