J'ai besoin d'un moyen de convertir une chaîne contenant une chaîne littérale représentant une valeur hexadécimale dans un caractère correspondant à cette valeur hexadécimale particulière.
Idéalement, quelque chose suivant ces lignes: P>
var hexArray = ["2F", "24", "40", "2A"] var charArray = [Character]() charArray = map(hexArray) { charArray.append(Character($0)) } charArray.description // prints -> "[/, $, @, *]"
4 Réponses :
Quelques choses sur votre code:
asciiValue(<letter>) - asciiValue('0')
Oui, je vois votre point là-bas avec la carte et la mission de tableau. En ce qui concerne l'utilisation de Strtoul () qui est définie dans les bibliothèques C Darwin, comme en dehors de l'importation du cadre de fondation. Je ne peux pas utiliser cette fonction dans ce contexte. Aucune fonction dans le cadre de la fondation ne peut être utilisée. Sinon, le code fonctionne. Cependant ce n'est pas ce que je cherche.
OK, une question: Votre hexaray va-t-il toujours être codé par ASCII? (comme dans: pas de charcuter plus de 255 ans)?
Oui ils vont / devrait toujours être des caractères ASCII
Vient d'ajouter une méthode hexoscalar.
J'aime la première édition ... Je suis curieux de savoir comment vous avez monté la formule pour le total dans chaque instance ... sont-ils les valeurs décimales des personnages?
Ajout de quelques explications laissez-moi savoir si ce n'est pas clair.
Vous allez ici:
var string = "\u{2c}"
avec Swift 5, vous devrez convertir votre variable de chaîne en un entier (en utilisant init (_: radix :) code>
initialiseur), créer un scalaire unicode à partir de cet entier (en utilisant init (_:) code>
) puis créez un caractère à partir de ce scalaire UNICODE ( Utilisation init (_:) code>
).
L'échantillon SWIFT 5 Le code ci-dessous montre comment procéder: p> Si vous souhaitez effectuer cette opération pour les éléments à l'intérieur d'une matrice, vous pouvez utiliser le code exemple ci-dessous: P >
let hexArray = ["2F", "24", "40", "2A"]
let characterArray = hexArray.compactMap({ (hexString) -> Character? in
guard let unicodeScalarValue = Int(hexString, radix: 16),
let unicodeScalar = Unicode.Scalar(unicodeScalarValue) else {
return nil
}
return Character(unicodeScalar)
})
print(characterArray) // prints: ["/", "$", "@", "*"]
Une autre manière simple basée sur les transformations ICU: usage: p> résultats: , code> p> p>