du.study기록공간

java millisecond (long) to Base64 string 변환 방법 본문

자바

java millisecond (long) to Base64 string 변환 방법

du.study 2021. 9. 19. 01:38
728x90

 

나름 중복이 덜 발생하면서, 일렬번호를 만들되, 짧게 만들 수 있는 방법이 어떤것이 있을가 찾아보던 도중, millisecond를 Base64 String 으로 만들면 어떨까 하는 생각이 들어, 해당방식을 찾아 작성합니다.

 

우선 사용한 모듈은 다음과 같습니다.

dependencies{
	implementation("commons-codec:commons-codec:1.5")
}

해당 모듈에서 Base64.encodeBase64URLSafeString 을 사용하기 위함입니다.

 

아래코드는 전체 플로우를 나타낸 코드입니다.

public static byte[] longToByte(Long x){
    ByteBuffer buffer = ByteBuffer.allocate(java.lang.Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}

public static Long byteToLong(byte[] bytes){
    ByteBuffer buffer = ByteBuffer.allocate(java.lang.Long.BYTES);
    buffer.put(bytes);
    buffer.flip();
    return buffer.getLong();
}

public static void main(String[] args) {
    Long now = LocalDateTime.now().atZone(ZoneId.of("UTC")).toInstant().toEpochMilli();
    System.out.println(now);

    String convertTimeToString = Base64.encodeBase64URLSafeString(longToByte(now));
    System.out.println(convertTimeToString);

    Long rollbackStringToLong = byteToLong(Base64.decodeBase64(convertTimeToString));
    System.out.println(rollbackStringToLong);
}

 

결과 값 사진

코드를 보면 현재 millisecond를 받아서 String으로 바꾸는 작업이 있고, 이 값을 다시 Long값으로 변경하는 로직이 있습니다.

 

이 작업을 핵심적으로 해주는 부분이 longToByte, byteToLong method이며, commons-codec:commons-code 를 통해서 Url safe한 String 으로도 encode, decode가 가능하게 됩니다.

 

728x90

'자바' 카테고리의 다른 글

Java @FunctionalInterface - Function  (0) 2021.12.14
Java @FunctionalInterface - Consumer  (0) 2021.11.17
Spring boot +gradle+node build with kotlin  (0) 2020.10.25
Java Async - CompletableFuture  (0) 2020.05.25
Java Optional 사용하기  (0) 2020.05.17
Comments