Ansistring to Array / IntToBin()



  • Hi,

    ich habe ein Problem. Ich habe mit der Funktion IntToBin() von der Indylib mir eine Integer Var in Binärcode umwandeln lassen. Das Problem ist das folgende formatierung dabei rauskommt

    Integer: 255
    Bin: 0000000000000000011111111

    die war in der der binärcode steht ist im Format AnsiString. Gibt es eine möglichkeit die letzten 8 zeichen (im beispiel die einsen) in ein auszufiltern und diese in ein array zu schreiben? (jede 1 in ein array)zB.
    das ich nachher folgende vars habe:
    x[0] = 1 <- Dies ist der Wert der 8. Stelle des AnsiStrings von rechts
    x[1] = 1 <- Dies ist der Wert der 7. Stelle des AnsiStrings von rechts
    x[2] = 1 <- Dies ist der Wert der 6. Stelle des AnsiStrings von rechts
    x[3] = 1 <- Dies ist der Wert der 5. Stelle des AnsiStrings von rechts
    x[4] = 1 <- Dies ist der Wert der 4. Stelle des AnsiStrings von rechts
    x[5] = 1 <- Dies ist der Wert der 3. Stelle des AnsiStrings von rechts
    x[6] = 1 <- Dies ist der Wert der 2. Stelle des AnsiStrings von rechts
    x[7] = 1 <- Dies ist der Wert der 1. Stelle des AnsiStrings von rechts

    Oder kennt wer vielleicht direkt ne möglichkeit eine Int zahl in Binär umzuwandeln, diese dann zu splitten und die inhalte in ein array zu schreiben?

    Vielleicht kennt jemand das Problem?

    Gruß Fraxs



  • Laß doch die Umwandlung in AnsiString weg und vergleiche bitweise mit "&".
    U.U. noch mit Shift ("<<", ">>")

    Gruß,

    Alexander



  • Hallo fraxs,

    nachstehend ein Beispiel für ein Byte dass du jederzeit auch auf int erweitern kannst

    Evi48

    const byte	BITTEST[8]				= {0x01, 0x02, 0x04, 0x08,
    															0x10, 0x20, 0x40, 0x80};
    			for(iBit = 0; iBit < 8; iBit++)
    			{
    				if((Funk1Tel->DataByte[iByte] & BITTEST[iBit]) == BITTEST[iBit])
    					cCahr[iBit]	= "1";
    				else
    					cCahr[iBit]	= "0";
    			}
    


  • Kann mir Bitte jemand sagen, welche Unit ich einbinden muss um IntToBin() benutzen zu können??



  • Hallo

    IntToBin() ist wohl eine selbstgeschriebene Funktion. In BCB 5 ist die jedenfalls nicht dabei.

    /Edit : die Quelle steht doch im ersten Post :

    Ich habe mit der Funktion IntToBin() von der Indylib

    bis bald
    akari



  • Wobei mit "Indylib" die Indy-Komponentensammlung gemeint ist.
    In der Version 9.x gibt es m.E. aber keine solche Funktion, ggf. bezog sich der ursprüngliche Beitrag auf die beim BCB6 mitgelieferte Version 8.



  • Danke! Aber ich bin zu dem Schluss gekommen, dass Shiften die bessere Lösung ist.


Anmelden zum Antworten