在NSString中将NSData显示为二进制

我在资源文件夹中有一个二进制文件(file.bin),我想读取它并将其显示为二进制文件。 这个想法是把二进制信息放到一个数组中,但是起初我试图用UILabel来展示它,就像这样:

`NSData * databuffer; NSString * stringdata;

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"bin"]; NSData *myData = [NSData dataWithContentsOfFile:filePath]; if (myData) { stringdata = [NSString stringWithFormat:@"%@",[myData description]]; labelfile.text = stringdata; } 

`

但它显示在hex数据。 如何在二进制文件中将其放入NSMutableArray中? 谢谢。

我不知道是否有任何本地的,但我可以提出一个解决方法。 你为什么不做自己的function来完成转换。 这是我的例子:

在你得到hex值的地方:

 NSString *str = @"Af01"; NSMutableString *binStr = [[NSMutableString alloc] init]; for(NSUInteger i=0; i<[str length]; i++) { [binStr appendString:[self hexToBinary:[str characterAtIndex:i]]]; } NSLog(@"Bin: %@", binStr); 

解决方法function:

 - (NSString *) hexToBinary:(unichar)myChar { switch(myChar) { case '0': return @"0000"; case '1': return @"0001"; case '2': return @"0010"; case '3': return @"0011"; case '4': return @"0100"; case '5': return @"0101"; case '6': return @"0110"; case '7': return @"0111"; case '8': return @"1000"; case '9': return @"1001"; case 'a': case 'A': return @"1010"; case 'b': case 'B': return @"1011"; case 'c': case 'C': return @"1100"; case 'd': case 'D': return @"1101"; case 'e': case 'E': return @"1110"; case 'f': case 'F': return @"1111"; } return @"-1"; //means something went wrong, shouldn't reach here! } 

希望这可以帮助!