Application convertisseur

Bonjour à tous,
J’aimerais reprendre l’application convertisseur que nous avons fait dans la formation mais la modifier et la faire convertir des nombres binaires en décimal et inversement. J’aimerais également que cela soit sur 8 bit. Je pense que il faut utiliser comme dans l’application de la formation, fondation cependant je ne vois pas où on peut trouver l’unité de base pour cela et donc la fonction pour convertir des décimal en bites et inversement.
Merci pour votre aide!

Swift ou Kotlin ? le forum traitant des deux langages, il est préférable de le préciser dans une question.

Kotlin, je ne sais plus … (et la flemme de chercher)

Swift :

Décimal vers binaire :

    let valeur = 52
    let binaire = String(valeur, radix: 2)
    print (valeur, " => ", binaire)

Binaire (dans une chaîne) vers Décimal :

    let valeurBinaire = "0100111011"
    if let valeurDecimal = Int(valeurBinaire, radix: 2) {
        print (valeurBinaire, "=>", valeurDecimal)
    }

La conversion d’une chaîne vers une valeur numérique peut échouer, si l’un des caractères est erroné. C’est pourquoi la valeur retournée est une variable optionnelle.

Le if let permet d’éviter un problème (bug ou plantage) si la conversion s’est mal passé (genre chercher la valeur décimale d’une chaîne binaire contenant autre chose que des 0 et des 1).

1 « J'aime »

C’était bien en Swift, c’est vrai je penserai à le préciser pour la prochaine fois! Merci beaucoup pour ta réponse! En fait si tu veux voilà ce que je voulais faire, dans la fonction quand que l’on crée pour l’application convertisseur dans la formation, la modifier et donc ils convertissent plus des mètres mais des décimal en binaire et inversement.
C’était donc ça les deux fonctions que je voulais modifier:

func getInputMeterValue () -> Double? {
    let inputMeter:Double?
    if let inputString:String = ui_inputUserValue.text,
    let inputDouble:Double = Double(inputString) {
    switch ui_segmentedcontrol.selectedSegmentIndex {
    case 0: //m
        inputMeter = inputDouble
    case 1: //CM
        inputMeter = UnitLength.centimeters.converter.baseUnitValue(fromValue: inputDouble)
    case 2: //Inches
        inputMeter = UnitLength.centimeters.converter.baseUnitValue(fromValue: inputDouble)
    default:
        inputMeter = nil
    }
    }else {
        inputMeter = nil
    }
        return inputMeter
}

Et cette fonction :

    func convert () {
        if let inputMeter = getInputMeterValue() {
            ui_meters.text = "\(inputMeter)mètre"
            ui_centimeters.text = "\(UnitLength.centimeters.converter.value(fromBaseUnitValue: inputMeter))centimètre"
            ui_inches.text = "\(UnitLength.inches.converter.value(fromBaseUnitValue: inputMeter))pouces"
        } else {
            ui_inches.text = " "
            ui_centimeters.text = " "
            ui_meters.text = " "

UnitLength sert à convertir des distances dans différentes ordres de mesures (centimètres, mètres, km, mesures anglaises, suédoises, liées marins, unités astronomiques, etc …).

Cela n’a aucun rapport avec le binaire, qui n’est PAS UNE UNITE DE MESURE, mais un moyen de stocker un nombre sous forme numérique.

L’information est la même qu’elle soit exprimée en décimal, en binaire ou en hexadécimale (base 16).

C’est pourquoi il n’y a pas de mode « conversion binaire » avec UnitLength, comme on peut le voir en lisant la documentation Apple :

https://developer.apple.com/documentation/foundation/unitlength

De plus le binaire est un format utilisé pour stocker des chiffres entiers, pas des nombres à virgules. Comment afficher en binaire une distance de 23,76 mètres ?

Il existe des procédés pour stocker un chiffre à virgule dans un format binaire, mais c’est un processus complexe que les systèmes d’exploitation et les processeurs gèrent de manière transparente, sans que l’utilisateur ait besoin de s’en préoccuper.

Plus d’infos ici si le sujet t’intéresse : https://fr.wikipedia.org/wiki/IEEE_754

Les développeurs n’ont généralement pas à s’occuper de ces détails très technique.

Les outils fournis avec les langages de programmation modernes (les types de données entiers, flottant, simple-précision, double-précision, etc …) permettent de manipuler les nombres sans se soucier de la manière dont ils sont codés en mémoire.

1 « J'aime »

D’accord merci beaucoup pour ta réponse ça va un peu plus d’éclaircies sur le sujet. Je pensais tu vois que avec UnitLength j’aurais pu faire ça mais j’ai confondu…Après voilà en fait si tu veux ce que je voudrais faire c’est juste une application ou tu rentres un nombre entier et ensuite il te les convertis en binaire donc par exemple si tu rentres 15 derrière l’application t’affiche 0b1111. Donc un convertisseur de nombre décimal en nombre binaire et j’aimerais bien après derrière mettre une fonction qui convertit des nombre binaire en décimal (donc l’inverse si tu rentre 1111 il 'affiche 15) et en fait si tu veux je cherche juste la fonction qui permet de convertir binaire décimal et décimal binaire.
Encore merci pout ton aide :slight_smile: