Java BigInteger 0x00 Trim

BigInteger.toByteArray()를 하면 최상위 비트가 1일때는 앞에 0x00이 붙게 된다.
아래 Java Doc BigInteger 참고.
The array will contain the minimum number of bytes required to represent this BigInteger, including at least one sign bit, which is (ceil((this.bitLength() + 1)/8)).

 어떤 이유로 이 0x00을 잘라서 사용해야 할 때가 있다.
아래 코드로 trim 해보자.

private byte[] trimMostSignificantZero(byte[] bytes) {
    if (bytes[0] == 0) {
        byte[] trimed = new byte[bytes.length - 1];
        System.arraycopy(bytes, 1, trimed, 0, trimed.length);
        return trimed;
    }
    return bytes;
}

댓글

이 블로그의 인기 게시물

[Protocol] WIEGAND 통신

Orange for Oracle에서 한글 깨짐 해결책

[UI] GNB·LNB·SNB·FNB 용어 설명