public static double bytesHighFirstToDouble(byte[] bytes, int start)
    {
        long l = ((long) bytes[start] << 56) & 0xFF00000000000000L;
        // 如果不强制转换为long，那么默认会当作int，导致最高32位丢失
        l |= ((long) bytes[1 + start] << 48) & 0xFF000000000000L;
        l |= ((long) bytes[2 + start] << 40) & 0xFF0000000000L;
        l |= ((long) bytes[3 + start] << 32) & 0xFF00000000L;
        l |= ((long) bytes[4 + start] << 24) & 0xFF000000L;
        l |= ((long) bytes[5 + start] << 16) & 0xFF0000L;
        l |= ((long) bytes[6 + start] << 8) & 0xFF00L;
        l |= (long) bytes[7 + start] & 0xFFL;

        return Double.longBitsToDouble(l);
    }
public static double bytesHighFirstToDouble ( byte [ ] bytes , int start ) { long l = ( ( long ) bytes [ start ] << 56 ) & 0xFF00000000000000L ; l |= ( ( long ) bytes [ 1 + start ] << 48 ) & 0xFF000000000000L ; l |= ( ( long ) bytes [ 2 + start ] << 40 ) & 0xFF0000000000L ; l |= ( ( long ) bytes [ 3 + start ] << 32 ) & 0xFF00000000L ; l |= ( ( long ) bytes [ 4 + start ] << 24 ) & 0xFF000000L ; l |= ( ( long ) bytes [ 5 + start ] << 16 ) & 0xFF0000L ; l |= ( ( long ) bytes [ 6 + start ] << 8 ) & 0xFF00L ; l |= ( long ) bytes [ 7 + start ] & 0xFFL ; return Double . longBitsToDouble ( l ) ; }
读取double，高位在前

@param bytes
@param start
@return