比较NSData和字节序列



注意:在其他问题中,它们比较的是存储在NSData对象中的值,而不是它的字节。

我想执行这样的操作:

NSData *d = ...;
if (d == "fff1") {
  ...
}

我找到的唯一解决方案:

NSData *d = ...;
NSString *str = [NSString withFormat:@"%@", d];
if ([str isEqualToString:@"<fff1>"] {
  ...
}

但是我不喜欢我需要在比较中添加额外的周围backs。有没有更好的解决方案?

为了比较原始数据,您使用memcmp:

NSData *dataA;
void *someBuffer;
if(memcmp([dataA bytes], someBuffer, dataA.length) == 0) ; //they are the same

注意,对于任何缓冲区来说,长度都不能太大。

编辑:添加 NSData 程序:

或者更好的是,您可以将字符串转换为NSData并在NSData上进行比较:

    NSData *d = ...;
    if([d isEqualToData:[NSData dataWithBytes:"fff1" length:sizeof("fff1")]]) {
    }

最新更新