리눅스,유닉스 권한 표기에서 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();
}