IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Division en base 16


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut Division en base 16
    Bonjour

    Je dois calculer un CRC pour envoyer une trame.
    Le crc est défini comme suis
    chkh = 30h + sum / 16 (MSB nibble)
    chkl = 30h + sum AND 15 (LSB nibble)

    un exemple sum fait AD
    le C# par l’opérateur '/' me donne 0x10 (A) alors que je devrais trouver 7.
    l'operateur & me donne (D) au lieu de 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        buffer = new byte[7];
                        buffer[0] = 0x02;
                        buffer[1] = address;
                        buffer[2] = 0x46;
                        buffer[3] = 0x31;
                        buffer[4] = 0x03;
     
                        sum = (byte)(buffer[0] + buffer[1] + buffer[2] + buffer[3] + buffer[4]);
     
                        buffer[5] = (byte) (0x30 + (sum/16));
                        buffer[6] = (byte) (0x30 + (sum & 15));
                        // resultat base 16
                        // buffer[5] = 0x37;
                        // buffer[6] = 0x35;
    y a t il un operateur tout fait pour diviser et faire un AND en base 16
    Un librairie, classe.

    Cordialement

  2. #2
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Bonjour,

    Avec les formules que tu donnes, je ne vois pas comment tu trouves ton 7 ou ton 5...

    Ah si: il suffit de lire 16 et 15 comme des nombres héxa, mais ta formule laisse plutôt penser qu'il s'agit de nombres en base 10...

    0xAD / 16 = 0x0A (d'où le commentaire "MSB nibble")
    0xAD / 0x16 = 0x07

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Par défaut
    Citation Envoyé par ricky78 Voir le message
    un exemple sum fait AD
    le C# par l’opérateur '/' me donne 0x10 (A) alors que je devrais trouver 7.
    l'operateur & me donne (D) au lieu de 5
    Oui comme dit Nnovic... ton souci est surtout que tu mélanges un peu les bases dans ton problème.

    En c# un nombre commençant par "0x" est en base 16 et un nombre ordinaire est en base 10.

    Donc ton exemple aurai plutôt dû être écrit comme cela :

    un exemple sum fait 0xAD
    le C# par l’opérateur '/' me donne 10 (0x0A) alors que je devrais trouver 7 (0x07).

    En fait ton "16" il devrait plutôt être un "0x16"

Discussions similaires

  1. Convertir entre bases par la méthode de division
    Par xfraisex dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/09/2014, 22h57
  2. Réponses: 2
    Dernier message: 12/09/2014, 10h33
  3. [AC-2003] Diviser ma base de données en groupes grâce à un bouton
    Par Flashpoint dans le forum IHM
    Réponses: 1
    Dernier message: 07/08/2010, 10h01
  4. [AC-2007] Diviser une base de données en deux.
    Par Crachover dans le forum Modélisation
    Réponses: 3
    Dernier message: 11/03/2010, 09h10
  5. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo