1 进制转换
2 位运算
3 JDK 内置的进制转换
package com.amoscxy;
public class RadixMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 十进制转为其它进制
System.out.println(Integer.toBinaryString(112)); // 二进制
System.out.println(Integer.toOctalString(112)); // 八进制
System.out.println(Integer.toHexString(112)); // 十六进制
// 其它进制转化成十进制
System.out.println(Integer.parseInt("111001",2)); // 二进制
System.out.println(Integer.parseInt("27",8)); // 八进制
System.out.println(Integer.parseInt("A8",16)); // 十六进制
}
}
4 Java 中的进制
package com.amoscxy;
public class Convert {
public static void main(String[] args) {
// TODO Auto-generated method stub
// int型与字节数组
byte[] arr = Convert.int2Bytes(8143); // int转化为字节数组
System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]);
System.out.println(Convert.bytes2int(arr)); // 字节数组转化为int
// long型与字节数组
arr = Convert.long2Bytes(8143); // long转化为字节数组
System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]);
System.out.println(Convert.bytes2long(arr)); // 字节数组转化为long
// 字符串与字节数组
String describe = "我每天都练功,我天下无敌!";
byte[] barr = describe.getBytes(); // 字符串转化为字节数组
String des = new String(barr); // 字节数组转化为字符串
System.out.println("des:"+des);
}
/**
* int转化为字节数组byte[]
* @param id
* @return
*/
public static byte[] int2Bytes(int id) {
byte[] arr = new byte[4];
// arr[0] = (byte)((id>>0*8)&0xff);
// arr[1] = (byte)((id>>1*8)&0xff);
// arr[2] = (byte)((id>>2*8)&0xff);
// arr[3] = (byte)((id>>3*8)&0xff);
for(int i =0;i<arr.length;i++) {
arr[i] = (byte)((id>>i*8)&0xff);
}
return arr;
}
/**
* 字节数组byte[]转化为int
* @param arr
* @return
*/
public static int bytes2int(byte[] arr) {
// int rs0=(int)(arr[0]&0xff)<<0*8;
// int rs1=(int)(arr[1]&0xff)<<1*8;
// int rs2=(int)(arr[2]&0xff)<<2*8;
// int rs3=(int)(arr[3]&0xff)<<3*8;
// return rs0+rs1+rs2+rs3;
int result = 0;
for(int i = 0;i<arr.length;i++) {
result +=(int)(arr[i]&0xff)<<i*8;
}
return result;
}
/**
* long转化为字节数组byte[]
* @param id
* @return
*/
public static byte[] long2Bytes(long id) {
byte[] arr = new byte[8];
// arr[0] = (byte)((id>>0*8)&0xff);
// arr[1] = (byte)((id>>1*8)&0xff);
// arr[2] = (byte)((id>>2*8)&0xff);
// arr[3] = (byte)((id>>3*8)&0xff);
for(int i =0;i<arr.length;i++) {
arr[i] = (byte)((id>>i*8)&0xff);
}
return arr;
}
/**
* 字节数组byte[]转化为long
* @param arr
* @return
*/
public static long bytes2long(byte[] arr) {
// int rs0=(int)(arr[0]&0xff)<<0*8;
// int rs1=(int)(arr[1]&0xff)<<1*8;
// int rs2=(int)(arr[2]&0xff)<<2*8;
// int rs3=(int)(arr[3]&0xff)<<3*8;
// return rs0+rs1+rs2+rs3;
int result = 0;
for(int i = 0;i<arr.length;i++) {
result +=(long)(arr[i]&0xff)<<i*8;
}
return result;
}
}
输出:
-49,31,0,0
8143
-49,31,0,0
8143
des:我每天都练功,我天下无敌!
推荐阅读:
位运算的威力:http://blog.csdn.net/iukey/article/details/7195265
大小端详讲:http://blog.csdn.net/zhaoshuzhaoshu/article/details/37600857