befehl für zeichenfolge in bitfolge umwandeln



  • Hi, gibts es eine FUnktion die o.g. realisiert, wenn nicht wie kann man sowas trotzdem realsiieren?



  • musste selber schreiben gibts net



  • alles klar, eine frage habe ich noch.

    wenn ich printf("%x", wert);
    dann wird ja mein wert formatiert.
    wie kann ich eine solche formatierung ohne ausgabe vornehmen?



  • das problem ist das es dann kein double integer etc ist , es enthällt als hexadezimale zahl auch char zeichen wie a bis f.
    die kannste dan natürlich nicht in einer int oder double variable vorfinden.

    da müsstest du dir ne klasse aufbauen .
    am besten sagst du was du vorhast , es gibt da bestimmt einen sehr leichten weg.



  • Jo, hab ich gerade gemerkt.
    Na ja, habs jetzt umgangen.

    Danke für die Antworten



  • callback, red keinen nonsense bitte.

    cmg, sprintf() wuerde die "ausgabe" in ein char array geben.
    ja, was willst du genau machen?



  • ich wollte eigentlich sowas realisieren.

    Eingabe "aa"

    Ausgabe: 01100001 01100001

    Also sowas wie Zeichen in Ascii in Binär, hab es jetzt manuell gemacht, wäre aber trotzdem interessant, ob es dafür eine vordefinierte FUnktion gibt.



  • dafuer gibt es keine vordefinierten funktionen.
    du musst selber den string ablaufen und die bits selber auslesen und ausgeben.

    such mal im forum, dann findest du sicher was.



  • Bei mir läufts jetzt, wollte es ja nur rückwirkend mal wissen 🙂

    Aber danke für die Antworten!



  • du denkst hoffentlich nicht, dass %x fuer binaer steht, oder?



  • hab jetzt mal was dazu geschrieben, aber abgesehen davon, das ich den binärwert
    verkehrt herum ausgebe, scheint mein buf[] zu groß angelegt zu sein. Wo ist da
    der Wurm drin?

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    	char feld[]="aa";
    	char *buf;
    	char currentLetter;
    	unsigned int i, j;
    
    	buf = (char *) malloc(sizeof(feld));
    
    	for (i=0; i<strlen(feld); i++)
    	{
    		currentLetter = feld[i];
    		printf(" ");
    
    		for(j=0; j<8; j++)
    		{
    			if ( currentLetter & 1 )
    				strcat(buf + i * sizeof(feld) + j, "1");
    			else
    				strcat(buf + i * sizeof(feld) + j, "0");
    
    			currentLetter >>= 1;
    		}
    
    	}
    
    	printf("%s\n", buf);
    
    	printf("\n");
    
    return 0;
    }
    

    //edit: habe c++ compiler, deswegen der cast vor malloc!

    Gut nacht!



  • curry-king: wozu malloc? und wieso nur so wenig (sizeof irgendwas)?
    im ernst, strcat()... ist dein code absichtlich so abartig oder schreibst du selten c?

    /*
     * ---------------------------------------------------------------------------------
     * "THE BEER-WARE LICENSE" (Revision 42):
     * <christoph.rackwitz@gmail.com> wrote this file. As long as you retain this notice
     * you can do whatever you want with this stuff. If we meet some day, and you think
     * this stuff is worth it, you can buy me a beer in return     -- Christoph Rackwitz
     * ---------------------------------------------------------------------------------
     */
    
    #include <stdio.h>
    #include <string.h>
    
    int bindump(char *from, size_t fromlen, char *to, size_t tolen)
    {
    	unsigned i = fromlen<<3;
    	if (tolen <= i) return -1;
    	to[i] = 0;
    	while (i--) to[i] = 060 + (from[i>>3] >> (i&7) & 1);
    	return 0;
    }
    
    int main(int argc, char **argv)
    {
    	char *src = "Hallo, Welt!";
    	char dst[200];
    	char *check = "00010010100001100011011000110110111101100011010000000100111010101010011000110110001011101000010000000000";
    
    	puts(bindump(src, strlen(src)+1, dst, sizeof dst) ? "life sucks!" : dst);
    	puts(strcmp(check, dst) ? "i am broken" : "yay!");
    
    	return 0;
    }
    

    Edits 1-6: Code geaendert.
    Edit 7: ich will nen Style Contest!
    Edit 8: vielleicht nicht der letzte Edit...
    Edit 9: ich habs doch gewusst! 😉


Anmelden zum Antworten