back-end/java

권한 8진수 표기를 문자 표기로 바꾸기

study-minjeong 2024. 8. 13. 15:27

리눅스,유닉스 권한 표기에서 8진수 표기(ex. 764)를 문자 표기(ex. rwxrw-r--)로 변경하는 방법을 정리한 내용이다.

 

AND(논리곱, &)을 사용하였다. 

두 비트가 모두 1일 경우에만 1이 되는 연산이다.

 

7,6,4를 각각 4,2,1로 AND 연산을 한다.

6은 이진수로 110, 4는 100, 2는 010, 1은 001이다.

6 & 4 = 110 & 100 = 100

6 & 2 = 110 & 010 = 010

6 & 1 = 110 & 001 = 000

결과값이 0인 경우에 권한이 없는 걸 알 수 있다.

 

 

이를 자바 코드로 표현하면

public static String permOctToString(String perm) {
        String[] permNum = perm.trim().split("");
        StringBuilder result = new StringBuilder();
        for (String s : permNum) {
            int num = Integer.parseInt(s);
            result.append((num & 4) == 0 ? '-' : 'r');
            result.append((num & 2) == 0 ? '-' : 'w');
            result.append((num & 1) == 0 ? '-' : 'x');
        }
        return result.toString();
}