Stocker une valeur en hexa

highthemhighthem Membre
Bonjour,

J'essaye de développer une application qui permet de contrôler un dock iPod pour jouer la musique du device branché dessus.
Pour cela, je dois suivre le protocole du dock.
Je dois lui envoyer la commande suivante en hexadécimal : 2A 49 00 04 38 3C 1A 01 24
Comment puis-je stocker cette valeur dans un tableau de char par exemple (sans que ce soit interprété comme de l'ASCII) ?

Merci d'avance.

Réponses

  • CéroceCéroce Membre, Modérateur
    06:07 modifié #2
    char commande[] = {0x2A, 0x49, 0x00, 0x04, 0x38, 0x3C, 0x1A, 0x01, 0x24};
    
  • highthemhighthem Membre
    06:07 modifié #3
    Dac' merci et comment je fais pour l'afficher sur mon terminal ?
    NSLog(@command vaut : %x, command); ?
  • DrakenDraken Membre
    06:07 modifié #4
    L'héxa c'est juste une manière de représenter des chiffres. Tu peux stocker tes informations en mémoire sous n'importe quelle forme, à  condition de savoir les convertir dans le bon format de sortie.

    La manière la plus lisible est de stocker la commande dans une chaà®ne de caractères.

    NSString *maCommande = @&quot;2A 49 00 04 38 3C 1A 24&quot;;<br />
    


    Et d'écrire une méthode recevant le NSString pour le "décompresser" et envoyer la série de chiffres au dock.

  • cyranocyrano Membre
    06:07 modifié #5

    Tu peux stocker tes informations en mémoire sous n'importe quelle forme


    Ah, interressant  :D
  • AliGatorAliGator Membre, Modérateur
    06:07 modifié #6
    dans 1309183202:

    L'héxa c'est juste une manière de représenter des chiffres. Tu peux stocker tes informations en mémoire sous n'importe quelle forme, à  condition de savoir les convertir dans le bon format de sortie.

    La manière la plus lisible est de stocker la commande dans une chaà®ne de caractères.

    NSString *maCommande = @&quot;2A 49 00 04 38 3C 1A 24&quot;;<br />
    


    Et d'écrire une méthode recevant le NSString pour le "décompresser" et envoyer la série de chiffres au dock.
    C'est loin d'être la plus simple façon de faire car ça veut dire qu'il faut ensuite découper ta NSString selon les espaces (ça ça va) mais ensuite interpréter les paires de caractères comme de l'hexa (convertir la chaà®ne "2A", sachant qu'elle représente un nombre écrit au format hexadécimal) c'est plus chiant (avec un NSScanner ça se fait bien, mais bon c'est quand même se compliquer le boulot alors que le stockage indiqué par Céroce est quand même plus simple à  manipuler ! Et tout aussi lisible ;))
  • DrakenDraken Membre
    06:07 modifié #7
    Pour mettre en oeuvre une seule commande, oui ! Par contre avec plusieurs commandes, cela se discute. De plus, l'utilisation d'une chaà®ne de caractères permet de taper les séquences de codes dans un fichier plist et non dans le corps de l'application.

  • tabliertablier Membre
    06:07 modifié #8
    le stockage indiqué par Céroce est quand même plus simple à  manipuler !
    Moi aussi je pense que c'est plus simple et que cela pourrait être (si la longueur de la chaine est fixe):
    char commande[] = {0x2A, 0x49, 0x00, 0x04, 0x38, 0x3C, 0x1A, 0x01, 0x24};
    NSLog(@%2x %2x %2x %2x %2x %2x %2x %2x , commande[0], commande[1], commande[2],
                                    commande[3], commande[4], commande[5], commande[6], commande[7] ) ;
    Il y a d'autres solutions, surtout si le protocole d'envoi admet des valeurs de 16 ou 32 bits.

    J'ai fait ça vite, j'espère que je ne me suis pas planté!!
Connectez-vous ou Inscrivez-vous pour répondre.