/**
*
将一个单字节的byte转换成32位的int
*
*
@param b
*
byte
*
@return convert result
*/
public
static
int
unsignedByteToInt(
byte
b) {
return
(
int
)
b &
0xFF
;
}
/**
*
将一个单字节的Byte转换成十六进制的数
*
*
@param b
*
byte
*
@return convert result
*/
public
static
String byteToHex(
byte
b) {
int
i = b &
0xFF
;
return
Integer.toHexString(i);
}
/**
*
将一个4byte的数组转换成32位的int
*
*
@param buf
*
bytes buffer
*
@param byte[]中开始转换的位置
*
@return convert result
*/
public
static
long
unsigned4BytesToInt(
byte
[]
buf,
int
pos) {
int
firstByte =
0
;
int
secondByte =
0
;
int
thirdByte =
0
;
int
fourthByte =
0
;
int
index = pos;
firstByte
= (
0x000000FF
& ((
int
)
buf[index]));
secondByte
= (
0x000000FF
& ((
int
)
buf[index +
1
]));
thirdByte
= (
0x000000FF
& ((
int
)
buf[index +
2
]));
fourthByte
= (
0x000000FF
& ((
int
)
buf[index +
3
]));
index
= index +
4
;
return
((
long
)
(firstByte <<
24
| secondByte <<
16
| thirdByte <<
8
| fourthByte)) & 0xFFFFFFFFL;
}
/**
*
将16位的short转换成byte数组
*
*
@param s
*
short
*
@return byte[] 长度为2
*
*/
public
static
byte
[]
shortToByteArray(
short
s) {
byte
[]
targets =
new
byte
[
2
];
for
(
int
i =
0
;
i <
2
;
i++) {
int
offset = (targets.length -
1
- i) *
8
;
targets[i]
= (
byte
)
((s >>> offset) &
0xff
);
}
return
targets;
}
/**
*
将32位整数转换成长度为4的byte数组
*
*
@param s
*
int
*
@return byte[]
*
*/
public
static
byte
[]
intToByteArray(
int
s) {
byte
[]
targets =
new
byte
[
2
];
for
(
int
i =
0
;
i <
4
;
i++) {
int
offset = (targets.length -
1
- i) *
8
;
targets[i]
= (
byte
)
((s >>> offset) &
0xff
);
}
return
targets;
}
/**
*
long to byte[]
*
*
@param s
*
long
*
@return byte[]
*
*/
public
static
byte
[]
longToByteArray(
long
s) {
byte
[]
targets =
new
byte
[
2
];
for
(
int
i =
0
;
i <
8
;
i++) {
int
offset = (targets.length -
1
- i) *
8
;
targets[i]
= (
byte
)
((s >>> offset) &
0xff
);
}
return
targets;
}
/**
32位int转byte[] */
public
static
byte
[]
int2byte(
int
res) {
byte
[]
targets =
new
byte
[
4
];
targets[
0
]
= (
byte
)
(res &
0xff
);
targets[
1
]
= (
byte
)
((res >>
8
)
&
0xff
);
targets[
2
]
= (
byte
)
((res >>
16
)
&
0xff
);
targets[
3
]
= (
byte
)
(res >>>
24
);
return
targets;
}
/**
*
将长度为2的byte数组转换为16位int
*
*
@param res
*
byte[]
*
@return int
*
*/
public
static
int
byte2int(
byte
[]
res) {
int
targets = (res[
0
]
&
0xff
)
| ((res[
1
]
<<
8
)
&
0xff00
);
return
targets;
}
/**
*
byte数组与short数组转换
*
*
@param data
*
@param items
*
@return
*/
public
static
short
[]
byteArray2ShortArray(
byte
[]
data) {
if
(data ==
null
)
{
return
null
;
}
short
[]
retVal =
new
short
[data.length
/
2
];
for
(
int
i =
0
;
i < retVal.length; i++) {
retVal[i]
= (
short
)
((data[i *
2
]
&
0xff
)
| (data[i *
2
+
1
]
&
0xff
)
<<
8
);
}
return
retVal;
}
/**
*
byte数组与short数组转换
*
*
@param data
*
@param items
*
@return
*/
public
static
byte
[]
shortArray2ByteArray(
short
[]
data) {
byte
[]
retVal =
new
byte
[data.length
*
2
];
for
(
int
i =
0
;
i < retVal.length; i++) {
int
mod = i %
2
;
if
(mod ==
0
)
{
retVal[i]
= (
byte
)
(data[i /
2
]);
}
else
{
retVal[i]
= (
byte
)
(data[i /
2
]
>>
8
);
}
}
return
retVal;
}
/**
*
对象转数组
*
*
@param obj
*
@return
*/
public
static
byte
[]
toByteArray(Object obj) {
byte
[]
bytes =
null
;
ByteArrayOutputStream
bos =
new
ByteArrayOutputStream();
try
{
ObjectOutputStream
oos =
new
ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
bytes
= bos.toByteArray();
oos.close();
bos.close();
}
catch
(IOException ex) {
ex.printStackTrace();
}
return
bytes;
}
/**
*
数组转对象
*
*
@param bytes
*
@return
*/
public
static
Object toObject(
byte
[]
bytes) {
Object
obj =
null
;
try
{
ByteArrayInputStream
bis =
new
ByteArrayInputStream(bytes);
ObjectInputStream
ois =
new
ObjectInputStream(bis);
obj
= ois.readObject();
ois.close();
bis.close();
}
catch
(IOException ex) {
ex.printStackTrace();
}
catch
(ClassNotFoundException ex) {
ex.printStackTrace();
}
return
obj;
}