单位
字 word
字节 byte
位 bit
十六进制 hex
八进制 octal
二进制 binary
换算
1 word = 2 byte
1 byte = 8bit
1 hex = 4bit
1binary = 1bit
8种基本数据类型
类型 | 存储需求 | bit数 | 取值范围 |
---|---|---|---|
byte | 1字节 | 1*8 | [-2^31,2^31-1] |
short | 2字节 | 2*8 | [-32768,32767] |
int | 4字节 | 4*8 | [-2^31,2^31-1] |
long | 8字节 | 8*8 | [-2^63,2^63-1] |
float | 4字节 | 4*8 | |
double | 8字节 | 8*8 | |
char | 2字节 | 2*8 | 无 |
boolean | 1字节 | 1*8 | false、true |
进制转换
十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));
十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
十进制转成十六进制
Integer.toHexString(10);
十进制转成八进制
Integer.toOctalString(10);
十进制转成二进制
Integer.toBinaryString(10);
八进制转成十六进制
Integer.toHexString(Integer.valueOf("567",8));
八进制转成十进制
Integer.valueOf("567",8).toString();
八进制转成二进制
Integer.toBinaryString(Integer.valueOf("567",8));
二进制转十六进制
Integer.toHexString(Integer.parseInt("0101", 2));
二进制转十进制
Integer.valueOf("0101",2).toString();
二进制转八进制
Integer.toOctalString(Integer.parseInt("0101", 2));
byte[ ]与String
1. byte[ ]转String
String str = new String(byteArray);
2. byte[ ]转HexString
public static String byteArrayToHexStr(byte[] byteArray) {
char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[byteArray.length * 2];
for (int j = 0; j < byteArray.length; j++) {
int v = byteArray[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
或
public static String byteArrayToHexStr(byte[] byteArray) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < byteArray.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
sb.append(0);
}
sb.append(hv);
}
return sb.toString();
}
3. String转byte[ ]
byte[] byteArray = str.getBytes(Charset charset);
Charset : UTF-8 \ ISO-8859-1 \ US-ASCII \ UTF-16BE
如果不传charset,默认为UTF-8
4. HexString转byte[ ]
public static byte[] hexStrToByteArray(String str) {
if (str == null) {
return null;
}
if (str.length() == 0) {
return new byte[0];
}
byte[] byteArray = new byte[str.length() / 2];
for (int i = 0; i < byteArray.length; i++){
String subStr = str.substring(2 * i, 2 * i + 2);
byteArray[i] = ((byte)Integer.parseInt(subStr, 16));
}
return byteArray;
}