如何将文件模式转换为整数?

huangapple go评论110阅读模式
英文:

How to convert filemode to int?

问题

示例代码:

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

文件的模式为 0775 (-rwxrwxr-x)。像这样运行它:

./main main

输出结果为 509

第二个示例代码:

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

这段代码输出 -rwxrwxr-x

如何以 0775 的格式获取模式?

英文:

Sample code:

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

File has mode 0775 (-rwxrwxr-x). Running it like:

>./main main

Prints 509

And second:

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

This code prints -rwxrwxr-x.

How I can get mode in format 0775?

答案1

得分: 7

509是权限位的十进制(十进制)表示形式。

形式0775是八进制(八进制)表示形式。您可以使用%o占位符将数字打印为八进制表示形式:

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

输出结果(在Go Playground上尝试):

775

如果您希望输出为4位数(在这种情况下带有前导0),请使用格式字符串"%04o"

fmt.Printf("%04o", perm) // 输出结果:0775

英文:

The value 509 is the decimal (base 10) representation of the permission bits.

The form 0775 is the octal representation (base 8). You can print a number in octal representation using the %o verb:

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

Output (try it on the Go Playground):

775

If you want the output to be 4 digits (with a leading 0 in this case), use the format string "%04o":

fmt.Printf("%04o", perm) // Output: 0775

huangapple
  • 本文由 发表于 2016年12月21日 17:36:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/41259439.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定