【问题标题】:Obj-C Read Little Endian From Binary File? (xcode)Obj-C 从二进制文件中读取 Little Endian? (xcode)
【发布时间】:2011-11-09 16:06:06
【问题描述】:

我正在寻找一种从二进制文件中获取 int 值的方法。所以可以说我有这个文件“myfile.dat”,我从我的电脑上存储了很多东西...... 现在我需要从我的 iPhone 读取该文件并显示数据...

在“myfile.dat”我有这个(二进制和所有整数都是小端): 0-12:签名字符串 13-16:一个int数(注意length = 4)

所以使用 NSData 我知道我可以从 pos 13 读取到 pos 16 并获取这些字节...我可以正确获取第一个 0-12 字符串,但我无法读取 pos 13-16 并将其转换为 int 值在 Obj-C.... ;(

我有类似的东西:

unsigned char bytes[length];
[_data getBytes:bytes range:NSMakeRange(offset, length)];
int32_t elem = OSReadLittleInt32(bytes, 0);

现在,我是 Obj-C 和 C/C++ 的新手……我一生都在使用 C#(悲伤)……

有人可以帮忙吗?提前致谢!

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    试试这个:

    unsigned long bytes;
    [_data getBytes: &bytes length: sizeof(unsigned long)];
    
    NSLog(@"%i", NSSwapLittleLongToHost(bytes));
    

    【讨论】:

    • 我还是得到了一些错误的号码:544106784。这是错误的......我正在寻找的正确号码是 333。
    • 可以添加NSLog(@"data: %@", [_data description])的输出吗?
    • 哦,男孩,你会恨我的...我以错误的顺序存储值(在文件上)...所以你的这个方法工作得很好。所以非常感谢你:)你摇滚!
    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2019-06-30
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多