1 java基本类型说明
1、byte 8位
2、short 16位
3、int 32位
4、double 64位
在java中一个byte称为一个字节,所以一个short需要用2个byte来构造,一个int需要4个byte来构造,一个double需要8个byte来构造,一个中文类型的字符占2个byte。
2 byte类型学习笔记
1、用byte[]构造字符串的时候byte by[] = {0}表示空格
用byte by[] = {0},构造字符串时表示一个空格,byte by[] = {0,0}表示两个空格......
byte by[] = {0};
String str = "fsd" + new String(by)+"sfasfsda";
str = "fsd sfasfsda";
3 代码演示
package com;
public class ByteUtil {
/**
* 用byte构造int数据,低位
* 一个byte(字节)占8位,一个int数据占32位,一个int类型的数据占4个字节,需要4个byte数据类接收
*/
public static int byteToInt(byte[] b) {
int s = 0;
int s0 = b[0] & 0xff;
int s1 = b[1] & 0xff;
int s2 = b[2] & 0xff;
int s3 = b[3] & 0xff;
s3 <<= 24;
s2 <<= 16;
s1 <<= 8;
s = s0 | s1 | s2 | s3;
return s;
}
/**
* 用byte[]构造int数据,高位
*/
public static int byteToInt2(byte[] b) {
int s = 0;
int s0 = b[0] & 0xff;
int s1 = b[1] & 0xff;
int s2 = b[2] & 0xff;
int s3 = b[3] & 0xff;
s0 <<= 24;
s1 <<= 16;
s2 <<= 8;
s = s0 | s1 | s2 | s3;
return s;
}
/**
* 将in转换为byte[]
*/
public static byte[] intToByte(int i) {
byte[] result = new byte[4];
result[0] = (byte) ((i >> 24) & 0xFF);
result[1] = (byte) ((i >> 16) & 0xFF);
result[2] = (byte) ((i >> 8) & 0xFF);
result[3] = (byte) (i & 0xFF);
return result;
}
/**
* 将short转换为byte[]
* @param number
* @return
*/
public static byte[] shortToByte(short number) {
int temp = number;
byte[] b = new byte[2];
for (int i = 0; i < b.length; i++) {
b[i] = new Integer(temp & 0xff).byteValue();
temp = temp >> 8;
}
return b;
}
/**
* 用byte[]构造short数据 低位
*/
public static short byteToShort(byte[] b) {
short s = 0;
short s0 = (short) (b[0] & 0xff);// 最低位
short s1 = (short) (b[1] & 0xff);
s1 <<= 8;
s = (short) (s0 | s1);
return s;
}
/**
* 用byte[]构造short数据,高位
*/
public static short byteToShort2(byte[] b) {
short s = 0;
short s0 = (short) (b[0] & 0xff);// 最低位
short s1 = (short) (b[1] & 0xff);
s0 <<= 8;
s = (short) (s0 | s1);
return s;
}
/**
* byte[]构造Long
*/
public static long byteToLong(byte[] b) {
long num = 0;
for (int ix = 0; ix < 8; ++ix) {
num <<= 8;
num |= (b[ix] & 0xff);
}
return num;
}
/**
* 截取byte[]数据,不够就补组成byte[]数组
* @param src
* @param begin 开始位置
* @param count 取少位
* @return
*/
public static byte[] subBytes(byte[] src, int begin, int count) {
byte[] bs = new byte[count];
for (int i = begin; i < begin + count; i++)
bs[i - begin] = src[i];
return bs;
}
/**
* 填充数据,不够位就补
* @param bytes 字符串
* @param length 填充长度
*/
public static byte[] makeUpBytes(byte[] bytes, int length) {
int oLen;
if (bytes == null) {
oLen = 0;
}
oLen = bytes.length;
if (oLen == length) {
return bytes;
}
byte[] nBytes = new byte[length];
for (int i = 0; i < length; i++) {
if (i < oLen) {
nBytes[i] = bytes[i];
} else {
nBytes[i] = 0;
}
}
return nBytes;
}
}
4 测试代码演示
package com;
public class ByteUtilTest {
public static void main(String[] args) {
byteStructureStr();
strByte();
getByteStr();
byte by[] = intToByte();
int num = byteToInt(by);
System.out.println(num);
}
/**
* 将String转换为byte[],然后将byte[]元素拼成字符串输出
*/
public static void byteStructureStr(){
//将String转换成byte[]
String str = "你妹。";
byte byte1[] = str.getBytes();
//将str转换后的byte字节数组已字符串的形式打印出来的字符串
String byteStr = "";
for(int i = 0; i < byte1.length; i++){
String b = byte1[i] + "";
if(i < byte1.length -1){
byteStr += b + ",";
}else{
byteStr += b;
}
}
System.out.println(byteStr);
}
/**
* byte[]构造String
*/
public static void strByte(){
//byte构造String
byte byte2[] = {-28, -67, -96, -27, -90, -71, -29, -128, -126};
String nimei = new String(byte2);
System.out.println(nimei);
}
/**
* 截取byte数组,不够就补位,然后用数构造字符串
*/
public static void getByteStr(){
byte by[] = {-45,-78,-28, -67, -96, -27, -90, -71, -29, -128, -126, -37};
int begin = 2;
int length = 9;
//截取后的byte数组,将这里的“9”修改为大于9的时候就是长度不够补位
byte by2[] = new byte[length];
int bynum = 0;
for (int i = begin; i < begin + length; i++) {
by2[bynum] = by[begin+bynum];
bynum++;
}
System.out.println(new String(by2));
}
/**
* 将in转换为byte[],低位
*/
public static byte[] intToByte() {
int i = 10000;
byte[] result = new byte[4];
result[0] = (byte) (i & 0xFF);
result[1] = (byte) ((i >> 8) & 0xFF);
result[2] = (byte) ((i >> 16) & 0xFF);
result[3] = (byte) ((i >> 24) & 0xFF);
return result;
}
/**
* 将byte[]转化为int,低位
* @param b
* @return
*/
public static int byteToInt(byte[] b) {
int s = 0;
int s0 = b[0] & 0xff;
int s1 = b[1] & 0xff;
int s2 = b[2] & 0xff;
int s3 = b[3] & 0xff;
s3 <<= 24;
s2 <<= 16;
s1 <<= 8;
s = s0 | s1 | s2 | s3;
return s;
}
/**
* 将int转换为byte[],高位
*/
public static byte[] intToByte2() {
int i = 10000;
byte[] result = new byte[4];
result[0] = (byte) ((i >> 24) & 0xFF);
result[1] = (byte) ((i >> 16) & 0xFF);
result[2] = (byte) ((i >> 8) & 0xFF);
result[3] = (byte) (i & 0xFF);
return result;
}
/**
* 用byte[]构造int数据,高位
*/
public static int byteToInt2(byte[] b) {
int s = 0;
int s0 = b[0] & 0xff;
int s1 = b[1] & 0xff;
int s2 = b[2] & 0xff;
int s3 = b[3] & 0xff;
s0 <<= 24;
s1 <<= 16;
s2 <<= 8;
s = s0 | s1 | s2 | s3;
return s;
}
}