它包含二进制数据之间的METADATA。我能够用标题Agent_of_Chang2e解析第一行,但我还需要在标题的底部获取元数据。我知道它没有标准细节。
此代码无法解码底线。例如,我得到以下错误的格式化文本:
FÃHANGE</b1èrX)¯ÌiadenÕniverse<sup><smalÀ|®¿8</¡Îovelÿ·?=SharonÌeeándÓteveÍiller8PblockquoteßßÚ>TIa÷orkyfiction.Áll@eãacÐ0hðortrayedén{n)áreïrzus0¢°usly.Ôhatíean0authhmxétlõp.7N_\
©ß©1988âyÓOOKãsòeserved.0ðart)publicaZmayâehproduc
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
char buffer[1024];
FILE* file = fopen([path UTF8String], "r");
if (file != 0)
{
while(fgets(buffer, 1024, file) != NULL)
{
NSString* string = [[NSString alloc] initWithCString: buffer encoding:NSASCIIStringEncoding];
NSLog(@"%@",string);
[string release];
}
fclose(file);
}
[pool drain];
答案 0 :(得分:0)
使用NSTask
或system()
通过strings
实用程序传递文件并解析其输出:
strings /bin/bash | more
...
...
677778899999999999999999999999999999:::;;<<====>>>>>>>>>>>????????
@(#)PROGRAM:bash PROJECT:bash-92
...
...
答案 1 :(得分:0)
nielsbot已经发布了link to the format specification。
正如您可以在那里阅读的那样,该文件不是文本文件,而是二进制编码。使用NSString
实例解析它并不是一个好主意。
你必须读取文件二进制文件,i。即使用NSData
:
NSData content = [NSData dataWithContentsOfFile:path];
然后你必须自己取出相关信息。例如,如果要读取未压缩的文本长度,您将在链接的文档中找到此信息从位置4开始并且长度为4。
int32_t uncompressedTextLength; // 4 bytes are 32 bit.
[content getBytes:&uncompressedLenght range:NSMakeRange(4, 4)];
也许你必须处理结束。
答案 2 :(得分:0)
首先,我很确定文本将是UTF-8或UTF-16编码。
其次,你不能随机取1024个字节并期望它们作为文本工作。字节顺序怎么样(big endian vs little endian)?