使用NSString或NSData从文件中读取十六进制值的问题

时间:2011-09-28 15:13:55

标签: iphone nsdata

我有一个文件,我需要从中获取一些数据,但是当我阅读它时我只会得到nil。

该文件包含

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

我尝试过几种方法读取文件但是当我把它变成字符串时总是会得到nil。

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.我错过了什么/我做错了什么?

2 个答案:

答案 0 :(得分:1)

您的文件可能根本不是以UTF8编码的。这就是为什么尝试将数据解释为某些UTF8字符串失败的原因。

您确定它不是UTF-16(LE或BE)或任何其他编码吗? (或者可能只是ASCII - 带有一些不可打印的字符)

答案 1 :(得分:-1)

text = [[NSString alloc] initWithString:[textData description]];怎么样? :)