    001package net.minecraft.network.rcon;
    002
    003public class RConUtils
    004{
    005    /** Translation array of decimal to hex digits */
    006    public static char[] hexDigits = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    007
    008    /**
    009     * Read a null-terminated string from the given byte array
    010     */
    011    public static String getBytesAsString(byte[] par0ArrayOfByte, int par1, int par2)
    012    {
    013        int var3 = par2 - 1;
    014        int var4;
    015
    016        for (var4 = par1 > var3 ? var3 : par1; 0 != par0ArrayOfByte[var4] && var4 < var3; ++var4)
    017        {
    018            ;
    019        }
    020
    021        return new String(par0ArrayOfByte, par1, var4 - par1);
    022    }
    023
    024    /**
    025     * Read 4 bytes from the
    026     */
    027    public static int getRemainingBytesAsLEInt(byte[] par0ArrayOfByte, int par1)
    028    {
    029        return getBytesAsLEInt(par0ArrayOfByte, par1, par0ArrayOfByte.length);
    030    }
    031
    032    /**
    033     * Read 4 bytes from the given array in little-endian format and return them as an int
    034     */
    035    public static int getBytesAsLEInt(byte[] par0ArrayOfByte, int par1, int par2)
    036    {
    037        return 0 > par2 - par1 - 4 ? 0 : par0ArrayOfByte[par1 + 3] << 24 | (par0ArrayOfByte[par1 + 2] & 255) << 16 | (par0ArrayOfByte[par1 + 1] & 255) << 8 | par0ArrayOfByte[par1] & 255;
    038    }
    039
    040    /**
    041     * Read 4 bytes from the given array in big-endian format and return them as an int
    042     */
    043    public static int getBytesAsBEint(byte[] par0ArrayOfByte, int par1, int par2)
    044    {
    045        return 0 > par2 - par1 - 4 ? 0 : par0ArrayOfByte[par1] << 24 | (par0ArrayOfByte[par1 + 1] & 255) << 16 | (par0ArrayOfByte[par1 + 2] & 255) << 8 | par0ArrayOfByte[par1 + 3] & 255;
    046    }
    047
    048    /**
    049     * Returns a String representation of the byte in hexadecimal format
    050     */
    051    public static String getByteAsHexString(byte par0)
    052    {
    053        return "" + hexDigits[(par0 & 240) >>> 4] + hexDigits[par0 & 15];
    054    }
    055}