我有一个文件,我需要从中获取一些数据,但是当我读取它时我只能得到零。使用NSString或NSData从文件中读取十六进制值的问题
文件包含
K vU™"3Dô U0?*
十六进制值
1B 1B 01 1B 4B 07 20 1B 76 02 06 55 AA 11 22 33 44 99 20 0A 1B 55 30 1B 1B 3F 0C 1B 2A 01 0C 0C
我试图读取该文件的几种方法,但总是零,当我把它变成一个字符串。
NSData *textData = [[NSData alloc] initWithContentsOfFile:filename];
NSLog(@"%@",[textData description]);
//prints out <1b1b011b 4b07201b 76020655 aa112233 4499200a 1b55301b 1b3f0c1b 2a010c0c>
text = [[NSString alloc] initWithData:textData encoding:NSUTF8StringEncoding];
//at this point text is nil
text = [[NSString alloc] initWithContentsOfFile:filename encoding:NSUTF8StringEncoding error:err];
//at this point text is still nil
text = [NSString stringWithContentsOfFile:filename encoding:NSUTF8StringEncoding error:err];
//at this point text is still nil
我知道它读取文件。我可以打印出属性并看到它的大小是30.我错过了什么/我做错了什么?
即时猜测它与大小或一些字符有关。我有几个文件需要阅读,这是迄今为止唯一一个导致问题的文件,但我看不出问题所在。我想我只需要浏览一下,看看它喜欢哪个角色就可以有更好的想法 – AtomRiot
看起来文件中的文本包含很多**控制字符,这可能是解码过程中混淆的东西。参见[这里](http://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder?encoding=hex&bytes=1B1B011B4B07201B76020655AA1122334499200A1B55301B1B3F0C1B2A010C0C)(从[本站](http://software.hixie.ch/ utilities/cgi/unicode-decoder/utf8-decoder))来详细解释UTF8中的十六进制字节。 – AliSoftware
看起来像这种情况下它是AA和99个字符。哼。感谢那个网站! – AtomRiot