編碼原理介紹(中文編碼雜談):
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