NSData à la Chaîne dans une Swift Questions
Je vais avoir des problèmes pour convertir mes NSData à NSString en swift. Je suis en utilisant ce que je pense est la bonne commande et format: NSString(data: <DATA>, encoding: <ENCODING>)
cependant ce que je dois-je garder de se retrouver avec une valeur nulle. Je suis en cours d'exécution le dernier Xcode beta donc je ne sais pas si c'est lié mais j'espère que sa simple et facile d'erreur que j'ai pu croiser.
J'ai attaché aire de jeux code ainsi qu'une capture d'écran.
Aire de jeux Code pour Xcode 6.3 Beta 2 Build (6D532l)
import Foundation
//: # NSData to String Conversion Playground
//: ### Step 1
//: The first step is to take an array of bytes and conver them into a NSData object. The bytes are as follows:
var testBytes : [UInt8] = [0x14, 0x00, 0xAB, 0x45, 0x49, 0x1F, 0xEF, 0x15, 0xA8, 0x89, 0x78, 0x0F, 0x09, 0xA9, 0x07, 0xB0, 0x01, 0x20, 0x01, 0x4E, 0x38, 0x32, 0x35, 0x56, 0x20, 0x20, 0x20, 0x00]
//: ### Step 2
//: Convert the byte array into an **NSData** Object
var immutableData = NSData(bytes: testBytes, length: testBytes.count)
//: ### Step 3
//: Attempt to convert the **NSData** object into a string so it can be sent around as ascii. This for some reason seems to be failing, however.
var convertedString = NSString(data: immutableData, encoding: NSUTF8StringEncoding)
println("String = \(convertedString)")
Résultats de Playgound
- La Swift officiel montre le même résultat. Où obtenez-vous les codes hex à partir de?
- Votre chaîne de données il suffit de regarder comme des ordures. Ainsi, le décodage va refuser de l'accepter. Mettre dans un certain juridique ascii et il fonctionne. Essayez par exemple
var testBytes : [UInt8] = [0x68, 0x65, 0x6c, 0x6c, 0x6f]
- Je veux juste une chaîne de valeurs hexadécimales. Je suppose que c'est en essayant de décoder comme réel ascii! Duh!!
- Utiliser la mise en forme d'impression pour obtenir la représentation hexadécimale.
- Oui, il y a quelques légitime de caractères, mais la plupart sont des ordures. Tout char de plus de 0x7F ou plus petit que 0x20 est des ordures.
Vous devez vous connecter pour publier un commentaire.
Xcode 8.2 • Swift 3.0.2
Test:
Utilisation valide de caractères UTF8!
Votre sortie sera:
"String = Optional(Hello World)"
String(data: immutableData, encoding: NSUTF8StringEncoding)
Si vous voulez juste les valeurs hexadécimales en chaîne:
La façon la plus simple pour ce faire est de simplement utiliser les Martinets construit dans la chaîne d'interpolation.
Cela vous donnera une chaîne de hex avec des espaces entre chaque deux personnages et entouré par des crochets. Comme ceci:
Vous pourriez format avec en utilisant le haut dans la chaîne de méthodes:
Vous aurez alors une chaîne de caractères contenant: a0ff214a
À l'aide de l'UTF8 dans Swift 3.0