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;
}

解决方案 »

  1.   

    为什么要这么做呢?怎么不存入一个int 数组,Integer 类有一个方法byteValue()  ,返回byte
      

  2.   

    要进行强制转换,eg:int a = 2000;
                        byte[] s = new byte[10];
                        s[0] = (byte)a;
      

  3.   

    Integer类的byteValue()方法返回的是数组吗??还是某位的应该怎么用??
      

  4.   

    byteValue 和 (byte) int值 的效果是一样的
    如果值大于 byte 的范围,反正的值就不是真值
      

  5.   

    这位 jamesfancy(]边城狂人) 大哥:
    可不可以解释下 (byte) (n & 0xFF)的意思
      

  6.   

    用 n 和 0xFF 相与,即保留低8位,其它高位全部置0 (一个 int 值是 32 位的)
    然后再强制转换成 byte 以便于赋值
    其实如果不算 n & 0xFF,强制转换的时候也基本上会正确的,只是可能在处理负数的时候会出点问题。没有试过。