在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
public class ByteOrderUtils {
public static byte [] int2byte( int res) {
byte [] targets = new byte [ 4 ];
targets[ 3 ] = ( byte ) (res & 0xff ); // 最低位
targets[ 2 ] = ( byte ) ((res >> 8 ) & 0xff ); // 次低位
targets[ 1 ] = ( byte ) ((res >> 16 ) & 0xff ); // 次高位
targets[ 0 ] = ( byte ) (res >>> 24 ); // 最高位,无符号右移。
return targets;
}
public static int byteArrayToInt( byte [] b){
byte [] a = new byte [ 4 ];
int i = a.length - 1 ,j = b.length - 1 ;
for (; i >= 0 ; i--,j--) { //从b的尾部(即int值的低位)开始copy数据
if (j >= 0 )
a[i] = b[j];
else
a[i] = 0 ; //如果b.length不足4,则将高位补0
}
int v0 = (a[ 0 ] & 0xff ) << 24 ; //&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位
int v1 = (a[ 1 ] & 0xff ) << 16 ;
int v2 = (a[ 2 ] & 0xff ) << 8 ;
int v3 = (a[ 3 ] & 0xff ) ;
return v0 + v1 + v2 + v3;
}
public static byte [] long2byte( long res) {
byte [] buffer = new byte [ 8 ];
for ( int i = 0 ; i < 8 ; i++) {
int offset = 64 - (i + 1 ) * 8 ;
buffer[i] = ( byte ) ((res >> offset) & 0xff );
}
return buffer;
}
public static long byteArrayToLong( byte [] b){
long values = 0 ;
for ( int i = 0 ; i < 8 ; i++) {
values <<= 8 ; values|= (b[i] & 0xff );
}
return values;
}
}
|
以上就是小编为大家带来的java int转byte和long转byte的方法全部内容了,希望大家多多支持服务器之家~