无法将NSData标头与Swift中的字符串进行比较

时间:2015-03-17 20:10:07

标签: ios swift byte ascii nsdata

我试图将标题(NSData的第一个字节)与字符串进行比较,我可以成功打印字符串,但比较不起作用。

这是我尝试过的:

var dataHeader:NSString = NSString(bytes: data.bytes, length: min(data.length, 8), encoding: NSASCIIStringEncoding)!

println(dataHeader)
result: PK

" PK"的ASCII是0x50 0x4B。

当我尝试以下操作时,没有任何反应:

if dataHeader == "PK" {

}

也许我是一个菜鸟,但我没有任何想法,所以有没有人知道如何解决这个问题? 我猜它与字符串编码有关,但经过大量的研究后,我仍然无法弄明白。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

" PK&#34>之后是否还有其他非打印字符?如果这是二进制数据?字符串dataHeader的长度是什么?

如果之后还有其他有趣的字符,您可以截断字符串或​​使用NSString的hasPrefix:方法:

if dataHeader.hasPrefix("PK") {
  // do something
}