Int in Binär



  • Ich will eine Integer Variable in Binär-Code umwandeln.
    z.B.: 4 in 0100 oder 0x0100
    Gibt es da eine fertige Funktion? 😕



  • Ich denke, du meinst, du willst die Zahl als Binär in einem String ausgeben, denn schliesslich ist ja die Zahl schon binär. 🙂
    Umwandeln kannst du sie mit "sscanf". Wie genau kann ich jetzt nicht sagen, aber die Hilfe müsste dir deine Fragen beantworten.



  • Und der Ausdruck "0x0100" ist nicht binär sondern Hexadezimal und bedeutet so viel wie 256, nur mal so als Hinweis.



  • Du kannst es auch in ner FOR-Schleife lösen. Indem du von der dezimalen Zahl 128 abziehst, prüfst ob es größer gleich 0 ist -> wenn ja soll er ne 1 an die erste Stelle des String (bin) setzen und die 128 wirklich abziehen. Dann das gleiche mit 64, 32, 16, 8, 4, 2 und 1. Für diese Zahlen kannst ja die pow-Funktion nehmen. Das wars mit umrechnen.

    Das wär jetzt der Lösungsvorschlag für ne 8-bit Zahl.

    Mach den String am besten immer 1 Zeichen größer weil du brauchst noch das '\0' am Schluss, sonst kann es sein das er dir nach dem String noch irgendwelchen Müll ausgibt.

    Hoffe ich konnte helfen

    Gruß Ralf



  • Probier mal das hier (Hab ich in Delphi geschrieben, und in C++ übersetzt, kann also sein, das du irgendwo noch kleine Details ändern musst):

    String IntToBin(int iDez, int iBit=8)
    {
       String sBin; // String, in den der Binaercode gespeichert wird
       int iZahl=1; // Runde Dualzahl (Fuer die Binaerwerte)
       int i;       // Counter 1
       int j;       // Counter 2
       for (i=0;i<iBit;i++)
          iZahl*=2;
       if (iDez>=iZahl)
         Application.MessageBox('Die Zahl ist größer als die angegebene Bitzahl.','Fehler',16);  //Fehlerausgabe, wenn Wert zu gross ist
       else
          for (i=iBit;i>=0;i--)
          {
             iZahl=1;
             for (j=0;j<i;j++)
                iZahl*=2;
             if (iDez-iZahl>=0)
             {
                sBin=sBin+"1"; //Wenn Zahl-Dualzahl groessergleich 0, dann abziehen und '1' zum String addieren
                iDez-=iZahl;
             }
             else
                sBin=sBin+"0"; //Andernfalls '0' zum String addieren
          }
       return sBin; //String zurueckgeben
    }
    


  • schleifen, sscanf,...
    😮

    habt ihr schon was von itoa() gehört?

    char c[34];
      itoa(4, c, 2); // binär
      // ergebnis in c ist "100"
      itoa(33, c, 16); // hexa
      // ergebnis in c ist "21"
    


  • Ach mann, immer diese C-Programmierer 😃



  • Windoof schrieb:

    Er wollte es aber in AnsiString haben.

    ich lach mich tod... *rofl*

    da du nicht weiss, wie man char* in AnsiString umwandelt, hier ein Bsp. Es ist etwas kompliziert, also nicht verzweifeln, wenn du es nicht gleich verstehst:

    char cDoof[5] = "doof\0";
    String sDoof = String(cDoof);
    


  • Xqgene schrieb:

    Windoof schrieb:

    Er wollte es aber in AnsiString haben.

    Wo steht das? - Habs schließlich nach weniger als 1 min. wieder herausgenommen und was anderes hingeschrieben... Irren ist menschlich.



  • ist ja ok, akzeptiert und vergessen.


Anmelden zum Antworten