在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理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的方法全部内容了,希望大家多多支持服务器之家~