java如何在int / long值的字节数组中转换字节值?

时间:2012-12-18 16:23:27

标签: java int bytearray byte long-integer

  

可能重复:
  How do I convert Long to byte[] and back in java

我想在int / long值中转换字节数组中的特定位置的字节值(带有偏移量start和我想要转换的字节数)?如果可能,反之亦然,如果是int - > byte:返回4bytes-array,如果是long,则为>字节:返回8bytes数组?

我使用了以下方法,但它们返回了错误的值..

public static final byte[] longToByteArray(long value) {
    return new byte[] {
            (byte)(value >>> 56),
            (byte)(value >>> 48),
            (byte)(value >>> 40),
            (byte)(value >>> 32),
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}


public static final byte[] intToByteArray(int value) {
    return new byte[] {
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}


public static long byteToLongWert(byte[] array, int offBegin, int offEnd) 
{
    long result = 0;
    for (int i = offBegin; i<offEnd; i++) {
        result <<= 8; //verschieben um 8 bits nach links
        result += array[i];
    }
    return result;
}

public static int byteToIntWert(byte[] array, int offBegin, int offEnd) 
{
    int result = 0;
    for (int i = offBegin; i<offEnd; i++) {
        result <<= 8; //verschieben um 8 bits nach links
        result += array[i];
    }
    return result;
}

非常感谢你的帮助!!

0 个答案:

没有答案