2016-12-21 4 views
1

Пример:Как преобразовать filemode в int? Код

func main() { 
    p, _ := os.Open(os.Args[1]) 
    m, _ := p.Stat() 
    println(m.Mode().Perm()) 
} 

файла режим 0775 (-rwxrwxr-x) имеет. Забегая нравится:

./main главный

Печать 509

И второе:

func main() { 
    p, _ := os.Open(os.Args[1]) 
    m, _ := p.Stat() 
    println(m.Mode().Perm().String()) 
} 

Этот код печатает -rwxrwxr-x.

Как я могу получить режим в формате 0775?

ответ

2

Значение 509 является десятичным (базовым 10) представлением битов разрешения.

Форма 0775 - это восьмеричное представление (основание 8). Вы можете напечатать число в восьмеричном представлении с помощью %o глагола:

perm := 509 
fmt.Printf("%o", perm) 

Output (попробовать его на Go Playground):

775 

Если вы хотите, чтобы вывод из 4 цифр (с ведущим 0 в этом случае), используйте строку формата "%04o":

+0

Спасибо, хороший человек. –