Objective c 如何测试NSData的特定字节值(也称为标头)

Objective c 如何测试NSData的特定字节值(也称为标头),objective-c,ios,byte,nsdata,Objective C,Ios,Byte,Nsdata,我有各种各样的数据流向我的班级。其中一些可以是rtf格式的字符串。现在我发现(希望是正确的)所有rtf格式的字符串都以 data: <7b5c7274 66315c61 and then random other data ....> 数据: 现在我需要进行一个测试,看看任何给定NSData的前8个字节是否等于(7b5c7274 66315c61)。所以我想问题有两个方面: 如何存储(7b5c7274 66315c61)值以进行测试 如何针对任何给定的NSData进行测试 谢谢大

我有各种各样的数据流向我的班级。其中一些可以是rtf格式的字符串。现在我发现(希望是正确的)所有rtf格式的字符串都以

data: <7b5c7274 66315c61 and then random other data ....>
数据:
现在我需要进行一个测试,看看任何给定NSData的前8个字节是否等于(7b5c7274 66315c61)。所以我想问题有两个方面:

  • 如何存储(7b5c7274 66315c61)值以进行测试

  • 如何针对任何给定的NSData进行测试


  • 谢谢大家!

    您可以调用
    getBytes:length:
    ,传递一个8字节的缓冲区,然后测试返回的结果


    将rtf文件放入
    NSData
    ,获取前八个字节,打印出来,并将这八个常量放入程序中的字节数组中。然后将该数组与
    getBytes:length:
    使用返回的八个字节进行比较。

    RTF是一种基于文本的文件格式。
    NSData
    中的那些值对应于“{\rtf1\a”,其中“\a”是“\ansi”的开头。就我个人而言,我只需测试前5个字节是否与“{\rtf”匹配。这就是命令的“”文件用作其测试的内容。请参见
    /usr/share/file/magic/rtf


    由于匹配文本是纯ASCII,因此可以使用
    NSString*theString=[[NSString alloc]initWithBytes:[theData bytes]长度:MIN([theData length],5)编码:nsascistringencoding]
    ,然后使用
    [theString isEqualToString:@“{\\rtf”]
    。如果数据不是ASCII码,则解码将失败,
    theString
    将为
    nil
    ,相等性测试将给出false(因为消息
    nil
    返回零),这正是您想要的。

    谢谢。如果其他事情失败,我可能会试试。我不太喜欢C/C++,所以我想这是最后的办法。但非常感谢您提供了一个可能的解决方案。谢谢。我在MIN中遇到了不同的错误(比较不同符号的类型f(id长度)又称无符号int和类型5又称int)。但没关系。在使用测试之前,我将测试数据长度是否至少为5