package com.test;
public class A {
/**
* @param args
*/
public static void main(String[] args) {
//其他进制转10进制
System.out.println("2转10 :"+ Integer.valueOf("1010",2).toString());
System.out.println("8转10 :"+ Integer.valueOf("125",8).toString() );
System.out.println("16转10:"+ Integer.valueOf("ABCDEF",16).toString());
//10进制转其他进制
int a = 11;
System.out.println("10转2 :"+ Integer.toBinaryString(a));
System.out.println("10转8 :"+ Integer.toOctalString(a));
System.out.println("10转16:"+ Integer.toHexString(a));
//16进制字符串
String hex = "5a5a";
System.out.println("16进制字符串转字节数组:");
int len = hex.length();
byte[] hexbytes = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
//16进制 16位, 字节8位, 所以16进制1位 占 字节的4位, 两位组成8位字节
hexbytes[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
}
//字节数组转16进制
System.out.println("字节数组转16进制:");
hex = null;
for (int i = 0; i < hexbytes.length; i++) {
hex = Integer.toString(hexbytes[i] & 0xff, 16);
if(hex.length() == 1)
hex = "0" + hex;
System.out.print(hex+",");
}
//字节
byte b = hexbytes[0];
char c = (char) (((hexbytes[0] & 0xFF) << 8) | (hexbytes[1] & 0xFF));
System.out.println(c);
byte[] intbytes = {0x00,0x00,0x00,0x31};
//高位在前,低位在后 字节8位,int32位,所以4个字节为1个int
int chunktype = (int)(intbytes[0] & 0xff)<<24 | (intbytes[1] & 0xff)<<16 | (intbytes[2] & 0xff)<<8 | (intbytes[3] & 0xff);
System.out.println("字节数组转int:"+chunktype);
}
/**
* 自动补零
* @param code
* @param num
* @return
*/
private static String autoGenericCode(String code, int num) {
// 保留num的位数
// 0 代表前面补充0
// d 代表参数为正数型
code = String.format("%0" + num + "d", Integer.parseInt(code));
return code;
}
}