001package co.codewizards.cloudstore.core.util; 002 003import static java.util.Objects.*; 004 005public final class LongUtil { 006 007 private LongUtil() { 008 } 009 010 public static final byte[] toBytes(final long value) { 011 final byte[] bytes = new byte[8]; 012 013 int idx = -1; 014 for (int i = 7; i >= 0; --i) 015 bytes[++idx] = (byte) (value >> (8 * i)); 016 017 return bytes; 018 } 019 020 public static final long fromBytes(final byte[] bytes) { 021 requireNonNull(bytes, "bytes"); 022 long value = 0; 023 024 final int imax = Math.min(8, bytes.length); 025 for (int i = 0; i < imax; ++i) 026 value = (value << 8) | (bytes[i] & 0xff); 027 028 return value; 029 } 030 031 public static final String[] toBytesHex(final long value, final boolean withZeroPadding) { 032 final byte[] bytes = toBytes(value); 033 String[] result = new String[bytes.length]; 034 for (int i = 0; i < bytes.length; i++) { 035 result[i] = Integer.toHexString(bytes[i] & 0xff); 036 037 if (withZeroPadding && result[i].length() == 1) 038 result[i] = '0' + result[i]; 039 } 040 return result; 041 } 042 043 public static final long fromBytesHex(final String[] bytesHex) { 044 requireNonNull(bytesHex, "bytesHex"); 045 final byte[] bytes = new byte[bytesHex.length]; 046 for (int i = 0; i < bytesHex.length; i++) 047 bytes[i] = (byte) Integer.parseInt(bytesHex[i], 16); 048 049 return fromBytes(bytes); 050 } 051}