Impossible de convertir NSData en NSString dans swift
C'est ma fonction. Première println
impression correcte de hachage pour la console, mais dans la ligne suivante du programme se bloque. Pouvez-vous m'aider?
func sha256(string: NSString) -> NSString {
var data : NSData! = string.dataUsingEncoding(NSUTF8StringEncoding)
var hash = [UInt8](count: Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0)
CC_SHA256(data.bytes, CC_LONG(data.length), &hash)
let res = NSData(bytes: hash, length: Int(CC_SHA256_DIGEST_LENGTH))
println(res)
let resstr = NSString(data: res, encoding: NSUTF8StringEncoding)
println(resstr)
return resstr
}
source d'informationauteur Yury Alexandrov
Vous devez vous connecter pour publier un commentaire.
retourne
nil
si les données ne représentent pas un UTF-8 valide séquence (ce qui est très probable). Puis, le lendemainprintln()
se bloque.Une possible représentation de chaîne pour des données binaires arbitraires serait
une chaîne hexadécimale ou une codé en Base 64 chaîne.
Un codé en Base 64 chaîne peut être simplement obtenus avec
Il n'y a (pour autant que je sache) aucune méthode intégrée de convertir des données binaires à un chaîne hexadécimale de.
Une mise en œuvre possible dans Swift (inspiré par les lots de disponibles Objective-C solutions) est
Mais vous pouvez l'intégrer dans votre méthode de hachage directement, sans l'aide d'un intermédiaire
NSData
objet: