package com.yoghurt.crypto.transactions.shared.util;
public final class NumberParseUtil {
private NumberParseUtil() {}
public static long parseLong(final byte[] bytes) {
return parseLong(bytes, 0, 0);
}
public static long parseLong(final byte[] bytes, final int offset) {
return parseLong(bytes, offset, 0);
}
public static long parseLong(final byte[] bytes, final int offset, final int shift) {
return bytes.length == offset ? 0 : (bytes[offset] & 0xFFL) << shift | parseLong(bytes, offset + 1, shift + 8);
}
public static long parseUint32(final byte[] bytes) {
return (bytes[0] & 0xFFL) << 0 |
(bytes[1] & 0xFFL) << 8 |
(bytes[2] & 0xFFL) << 16 |
(bytes[3] & 0xFFL) << 24;
}
public static int countOnes(int i) {
i = i - ((i >>> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;
}
}