我正在尝试读取文件的前四个字节。我知道这适用于以下 C 代码:
FILE *file = fopen(URL.path.UTF8String, "rb");
uint data;
fread(&data, 4, 1, file);
NSLog(@"%u", data);
打印出来:205
我正在尝试在 Objective-C/使用 Cocoa 函数中找到等效的方法。我已经尝试了很多东西。我觉得以下内容很接近:
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:URL error:nil];
NSData *data2 = [fileHandle readDataOfLength:4];
NSLog(@"%@", data2);
NSLog(@"%u", (uint)data2.bytes);
这打印出来:< cd000000 >
和:1703552
正如所料,文件的前四个字节确实是 CD000000。
我假设有两件事之一导致差异(或两者兼而有之):
fread 不计算 CD 后面的 0。我已经通过仅使用 fileHandle 读取 1 个字节来确认这一点,但有时这个数字会扩展超过一个字节,所以我不能像这样限制它。我是否需要手动检查传入的字节不是 00?
这与字节顺序有关。我已经尝试了许多功能,例如 CFSwapInt32BigToHost 但无法取回正确的值。如果有人能告诉我字节序如何工作/影响这一点,那就太好了。