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

Can't compare NSData header to string in Swift

我正在尝试将 header(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" {

}

也许我是菜鸟,但我没有任何想法,所以有人知道如何解决这个问题吗? 我猜是跟字符串编码有关,但是查了很多资料还是搞不明白。

感谢任何帮助,谢谢!

如果是二进制数据,在"PK"之后是否还有其他非打印字符?字符串 dataHeader 的长度是多少?

如果后面还有其他搞笑的字符,可以截断字符串或​​者使用NSString的hasPrefix:方法:

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