java byte 反转_Java-byte-到-long-int类型转换,反转

2023-05-16

在java中,任何的计算如果没有没有显式的数据类型转换,计算结果都会变成int类型

如下byte的计算

@Test

public void test6() {

byte b = 2;

System.out.println(b<<8);

System.out.println(b<<32);

}

输出结果:

512

2

也就是说,b移位的结果变成了int类型

char类型的计算

@Test

public void test6() {

char c = 2;

System.out.println(c<<16);

System.out.println(c<<32);

}

输出结果:

131072

2

总结:数据类型较int短的,也就是小于四字节的数据类型,计算结果就都为int类型

数据类型大于四字节的,就保持

int 和 long 类型转换

* int 转 byte

public static byte[] int2Byte(int number) {

byte[] b = new byte[4];

b[0] = (byte) (number >> 24);

b[1] = (byte) (number >> 16);

b[2] = (byte) (number >> 8);

b[3] = (byte)number;

return b;

}

* byte转int,和上面的int2byte对应

public static int byte2Int(byte[] b) {

int i3 = (b[0] & 0xFF)<< 24;

int i2 = (b[1] & 0xFF)<< 16;

int i1 = (b[2] & 0xFF)<< 8;

int i0 = b[3] & 0xFF;

return i3 | i2 | i1 | i0;

}

long 和 byte 类型转换代码

* long 转换成 byte[]

public byte[] long2Byte(long number) {

byte[] b = new byte[8];

for(int i=0; i<8; i++) {

b[i] = (byte) (number>>((8-i-1)*8));

}

return b;

}

* byte[] 转换成 long,第一种方式

public long byte2Long(byte[] b) {

long end = 0;

for(int i=0; i<8; i++) {

end = end | ((long)(b[i] & 0xff)<

* 在这其中的b[i]必须加上一个类型转换,没有加上long类型计算结果就只会是int类型

}

return end;

}

* 第二种方式

public long byte2Long2(byte[] b){

long values = 0;

for (int i = 0; i < 8; i++) {

values <<= 8; values|= (b[i] & 0xff);

}

return values;

}

测试代码 long to byte

* 测试long到byte的转换,反转

@Test

public void test3() {

long n = 9000000000L;

byte[] b = long2Byte(n);

long number = byte2Long(b);

System.out.println(number);

long number2 = byte2Long2(b);

System.out.println(number2);

}

输出结果:

9000000000

9000000000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java byte 反转_Java-byte-到-long-int类型转换,反转 的相关文章

随机推荐