md5哈希返回,并封装在swift中

md5哈希返回,并封装在swift中,swift,md5,Swift,Md5,我使用了这个,得到了散列结果。但是,返回值如下所示:。我是swift的新手,所以我不能完全确定这是否是一个封装。如何去掉小于号和大于号?从签名中可以看出,函数返回一个NSData对象: func md5(#string: String) -> NSData 如果要将其转换为字符串,则需要以人类可读的格式对其进行编码。最常见的是十六进制表示法 如果您使用该问题中较新的Swift 2函数,它将返回UInt8数组 func md5(string string: String) -> [U

我使用了这个,得到了散列结果。但是,返回值如下所示:。我是swift的新手,所以我不能完全确定这是否是一个封装。如何去掉小于号和大于号?

从签名中可以看出,函数返回一个NSData对象:

func md5(#string: String) -> NSData
如果要将其转换为字符串,则需要以人类可读的格式对其进行编码。最常见的是十六进制表示法

如果您使用该问题中较新的Swift 2函数,它将返回UInt8数组

func md5(string string: String) -> [UInt8] {
    var digest = [UInt8](count: Int(CC_MD5_DIGEST_LENGTH), repeatedValue: 0)
    if let data = string.dataUsingEncoding(NSUTF8StringEncoding) {
        CC_MD5(data.bytes, CC_LONG(data.length), &digest)
    }

    return digest
}
您可以使用这个方便的toHex函数:

func toHex(bytes: [UInt8]) -> String {
    var numbers = [String]()
    for byte in bytes {
        if byte < 0x10 {
            numbers.append("0")
        }
        numbers.append(String(byte, radix: 16, uppercase: true))
    }
    return numbers.joinWithSeparator("")
}

在我看来,你应该总是喜欢纯SWIFT类型的Unt8数组,而不是基础类型NStase.< /P>,这意味着NSDATA对象是用它的描述方法来打印的。如果你搜索NSEDATA到十六进制字符串,那么你应该找到一些解决方案,例如:@ USSR131364。如果这个答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。

toHex(md5("Hello"))