在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! }
希望这可以帮助!