public static byte[] getIntBytes(int n) {
final int size = 4;
byte[] byteArray = new byte[size];
for (int i = size - 1; i >= 0; --i) {
byteArray[i] = (byte) (n & 0xFF);
n >>>= 8;
}
return byteArray;
}public static int toInt(byte[] byteArray) {
final int size = 4;
if (byteArray.length != size) { // 由于一个int值需要4字节存储
return 0; // 所以如果传入的不是4字节
} // 则认为出错,返回0
int v = 0;
v |= (byteArray[0] & 0xFF);
for (int i = 1; i < size; ++i) {
v <<= 8;
v |= byteArray[i] & 0xFF;
}
return v;
}
final int size = 4;
byte[] byteArray = new byte[size];
for (int i = size - 1; i >= 0; --i) {
byteArray[i] = (byte) (n & 0xFF);
n >>>= 8;
}
return byteArray;
}public static int toInt(byte[] byteArray) {
final int size = 4;
if (byteArray.length != size) { // 由于一个int值需要4字节存储
return 0; // 所以如果传入的不是4字节
} // 则认为出错,返回0
int v = 0;
v |= (byteArray[0] & 0xFF);
for (int i = 1; i < size; ++i) {
v <<= 8;
v |= byteArray[i] & 0xFF;
}
return v;
}
byte[] s = new byte[10];
s[0] = (byte)a;
如果值大于 byte 的范围,反正的值就不是真值
可不可以解释下 (byte) (n & 0xFF)的意思
然后再强制转换成 byte 以便于赋值
其实如果不算 n & 0xFF,强制转换的时候也基本上会正确的,只是可能在处理负数的时候会出点问题。没有试过。