0

ファイルのアクセス許可を8進数で表示したいと思います。以下のコードは機能しますが、権限は10進数でのみ表示されます。結果を8進数に変換する方法はありますか?%oは正しい結果を表示しません。

NSString *path=@"/somepath";
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *contents = [fm contentsOfDirectoryAtPath:path error:NULL];
NSString* fullPath = nil;

for(NSString* node in contents) {

    fullPath = [NSString stringWithFormat:@"%@%@",path,node];
    NSDictionary *fileAttributes = [fm attributesOfItemAtPath:fullPath error:NULL];

    unsigned *posix=(unsigned *)[fileAttributes valueForKey:NSFilePosixPermissions];
    NSLog(@"Permissions:%@", posix); //shows 420 decimal. I need to show 644 octal

}

ありがとう

4

1 に答える 1

0

書式設定%oを使用して、8進数で出力できます。ただし、fileAttributesディクショナリにはNSNumberオブジェクトが含まれているため、ディクショナリを機能させるには次の手順を実行する必要があります。

NSNumber *posixPermissions = [fileAttributes valueForKey:NSFilePosixPermissions];
NSLog(@"Permissions: %o", [posixPermissions shortValue]);
于 2012-10-03T19:42:12.103 に答える