Raccourcissez l'UUID en base64 dans Swift.

Les UUID peuvent être générés de manière distribuée et sont assez faciles à utiliser, mais ils sont assez longs lors de l'encodage.

E2731BE6-470D-4782-B853-E5B13E8A1ECF D879A224-9A58-4D71-8E43-B7F3D001B7E4 FFF4DCE4-3C49-459B-BDB9-EB4B5A030FEB

Je voudrais éviter de conserver cela tel quel.

Les UUID sont généralement écrits en hexadécimal, donc si vous les enregistrez sous forme de chaînes, vous devriez pouvoir les raccourcir encore plus.

la mise en oeuvre

Implémentez ʻextension` comme ceci.


extension UUID {
    public var base64String: String {
        var base64WithPadding = self.data.base64EncodedString()
        //À la fin de base64==Se débarrasser de
        base64WithPadding.removeLast(2)
        return base64WithPadding
    }
    
    public var data: Data {
        var result = Data()
        let uuidTuple = self.uuid
        result.append(uuidTuple.0)
        result.append(uuidTuple.1)
        result.append(uuidTuple.2)
        result.append(uuidTuple.3)
        result.append(uuidTuple.4)
        result.append(uuidTuple.5)
        result.append(uuidTuple.6)
        result.append(uuidTuple.7)
        result.append(uuidTuple.8)
        result.append(uuidTuple.9)
        result.append(uuidTuple.10)
        result.append(uuidTuple.11)
        result.append(uuidTuple.12)
        result.append(uuidTuple.13)
        result.append(uuidTuple.14)
        result.append(uuidTuple.15)
        return result
    }
}

Cela peut réduire de 36 caractères à 22 caractères.

40CC21EA-7D27-49CC-8A18-280373933BE2 -> QMwh6n0nScyKGCgDc5M74g
2AF87112-E64C-441F-85E1-FD4FCCD097CA -> KvhxEuZMRB+F4f1PzNCXyg
D9C051E6-D7E2-4198-9CB1-A399E347D860 -> 2cBR5tfiQZicsaOZ40fYYA

tester

Tester avec le code ci-dessous

for _ in 0..<10 {
    let id = UUID()
    let data = Data(base64Encoded: id.base64String + "==")!

    let uuid = UUID(uuid: (
        data[0], data[1], data[2], data[3], data[4], data[5],
        data[6], data[7], data[8], data[9], data[10], data[11],
        data[12], data[13], data[14], data[15]
    ))

    print(id, "->", id.base64String, "->", uuid)
}
40CC21EA-7D27-49CC-8A18-280373933BE2 -> QMwh6n0nScyKGCgDc5M74g ->
40CC21EA-7D27-49CC-8A18-280373933BE2

2AF87112-E64C-441F-85E1-FD4FCCD097CA -> KvhxEuZMRB+F4f1PzNCXyg -> 
2AF87112-E64C-441F-85E1-FD4FCCD097CA

D9C051E6-D7E2-4198-9CB1-A399E347D860 -> 2cBR5tfiQZicsaOZ40fYYA -> 
D9C051E6-D7E2-4198-9CB1-A399E347D860

Il peut être compressé de manière réversible.

Recommended Posts

Raccourcissez l'UUID en base64 dans Swift.
Passer les paramètres régionaux i18n à JavaScript
Je veux supprimer la marge supérieure dans UITableView de Grouped (swift)
[Swift] Copie la chaîne de caractères dans le presse-papiers
[swift5] Comment spécifier la couleur en hexadécimal
Référence Java à comprendre dans la figure
Comment faire une conversion de base en Java
Comment obtenir la date avec Java
Comment écraser les données Firebase avec Swift
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
Comment vérifier le journal dans le conteneur Docker
[Swift 5] Traitement pour fermer le clavier sur UITableView
J'ai essayé d'organiser la session en Rails
3 façons d'importer des bibliothèques dans Android Studio
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Lorsque Eclipse ne parvient pas à démarrer le serveur
[Swift] Comment changer l'ordre des éléments de barre dans le contrôleur de barre d'onglets [Débutant]
Ajouter classpath: au chemin spécifié dans spring.datasource.schema
Comment exécuter des tâches en parallèle avec Swift dans Swift Package
Comment créer la blockchain la plus simple de Ruby
Comment vérifier les commandes Rails dans le terminal
Je veux obtenir la valeur en Ruby
[Swift] Comment décrire simplement le rejet qui n’a pas été enseigné dans le livre d’introduction
[Swift] Comment afficher les caractères saisis sur le Widget via UserDefaults lors de l'utilisation du WidgetKit
J'étais accro à NoSuchMethodError dans Cloud Endpoints
Comment implémenter UICollectionView avec du code uniquement dans Swift
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
[Java] Comment omettre le constructeur privé dans Lombok
Je veux intégrer n'importe quel TraceId dans le journal
Tokoro j'ai réécrit dans la migration de Wicket 7 à 8
[Swift] Enregistrer la couleur aux valeurs par défaut de l'utilisateur avec l'interface utilisateur Swift (Remarque)
Comprendre les caractéristiques de Scala en 5 minutes (Introduction à Scala)
Source utilisée pour obtenir l'URL de la source de redirection en Java
Comment créer un URI de données (base64) en Java
Organisé comment interagir avec le JDK par étapes
Classes et instances Java comprises dans la figure
Comment spécifier le chemin de la ressource dans l'importation HTML
Trouvez la valeur approximative de log (1 + x) avec Swift
Comment déboguer le fichier jar généré avec Eclipse
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
[Swift] Comment obtenir l'ID de document Firebase
[Rails] Comment afficher les images dans la vue
Pour déboguer avec Eclipse
Divide devient 0 dans Swift
Tableau multidimensionnel dans Swift
Comment obtenir le nom d'une classe / méthode exécutée en Java