我有一個文件,我需要從中獲取一些數據,但是當我讀取它時我只能得到零。使用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