// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.crypto.digests;

import org.bouncycastle.util.Arrays;

public class XofUtils
{
    public static byte[] leftEncode(final long n) {
        byte b = 1;
        long n2 = n;
        while ((n2 >>= 8) != 0L) {
            ++b;
        }
        final byte[] array = new byte[b + 1];
        array[0] = b;
        for (byte b2 = 1; b2 <= b; ++b2) {
            array[b2] = (byte)(n >> 8 * (b - b2));
        }
        return array;
    }
    
    public static byte[] rightEncode(final long n) {
        byte b = 1;
        long n2 = n;
        while ((n2 >>= 8) != 0L) {
            ++b;
        }
        final byte[] array = new byte[b + 1];
        array[b] = b;
        for (byte b2 = 0; b2 < b; ++b2) {
            array[b2] = (byte)(n >> 8 * (b - b2 - 1));
        }
        return array;
    }
    
    static byte[] encode(final byte b) {
        return Arrays.concatenate(leftEncode(8L), new byte[] { b });
    }
    
    static byte[] encode(final byte[] array, final int n, final int n2) {
        if (array.length == n2) {
            return Arrays.concatenate(leftEncode(n2 * 8), array);
        }
        return Arrays.concatenate(leftEncode(n2 * 8), Arrays.copyOfRange(array, n, n + n2));
    }
}
