int in z.B.0xF5 umwandeln



  • Hallo Leute!
    Ich stehe im Moment vor folgendem Problem.
    Ich habe eine Textdatei, die mehrere oktets mit verschiedenen Hexwerten enthält. Diese lese ich ein und wandle sie zunächst in int um.
    Nun muss ich diese Werte aber an eine Methode übergeben, die zu einer Bibliothek gehört, die ich nicht selbst geschrieben habe und diese Werte als char-Array benötigt. Ich suche also nach einer Umwandlung in dieser Art:

    int zahlen[] = {255, 2, 19, 124};

    //Umwandlung

    char daten[] = {0xFF, 0x02, 0x13, 0x7C};

    Könnt ihr mir da einen Hinweis geben, wie ich das am besten erledige?
    In der besagten Bibliothek habe ich gesehen, dass diese sowohl mit den Werten dieses char-Arrays arbeitet (also z.B. 255 für 0xFF) aber auch Abfragen darüber laufen lässt wie if(daten[1] == 0x13).
    Ich fürchte mir sind die Datenstrukturen dahinter noch nicht so wirklich klar, wäre nett wenn mir die auch noch jemand erklären könnte oder einen Link hätte, wo sie erklärt werden.
    Schonmal besten Dank!



  • for (int i=0;i<size;i++)daten[i]=zahlen[i];
    

    Ich versteh auch nicht ganz, wo der Unterschied zwischen "Abfragen machen" und "mit Werten arbeiten" ist.
    Falls du dich an den Darstellungsweisen störst, 0xFF ist z.B. einfach die hexadezimale Darstellung von 255. Es macht keinen Unterschied, im welcher Form du die Zahlen angibst.



  • Die Zahl (unsigned char) 255 bzw. (unsigned char) 0xFF ist im Speicher sowieso 11111111 (dein Oktett).
    Der *Wert* ist der selbe, nur die *Darstellung* ist anders, d.h. printf("%d"), zahl); wird dir 255 ausgeben, printf("0x%x"); hingegen 0xFF beispielsweise - letzendlich ist es also egal, in welcher Darstellung die Werte im Source vorliegen, du übergibst mit 255 sowie mit 0xFF eine 1 Byte große Zahl mit den Bits 11111111.


Anmelden zum Antworten