Convertit une Chaîne Binaire en C

im essayant de convertir la chaîne binaire en C. Cette fonction doit retourner une chaîne de caractères(char *) comme "010010101" etc. Aussi je veux imprimer que ce qui est retournée. Je ne peux pas être sûr à propos de ce code

FONCTION

char* stringToBinary(char* s)
{
    if(s == NULL) return 0; /* no input string */
    char *binary = malloc(sizeof(s)*8);
    strcpy(binary,"");
    char *ptr = s;
    int i;

    for(; *ptr != 0; ++ptr)
    {

        /* perform bitwise AND for every bit of the character */
        for(i = 7; i >= 0; --i){
            (*ptr & 1 << i) ? strcat(binary,"1") : strcat(binary,"0");
        }


    }

    return binary;
}
  • malloc(sizeof(s)*8); jamais la confiance de l'utilisateur (l'appelant).
  • Pourquoi êtes-vous allouer de l'espace pour 8 pointeurs?
  • Chaque char a 8 bouchées, si j'ai une chaîne qui comprennent 10 lettres, cela signifie 10*8? N'est-il pas?
  • strcpy(binary,"") peut être simplifié à *binary = '\0'.
  • s est un pointeur vers char. sizeof s est de la taille d'un char * (probablement 4 ou 8 octets).
  • C techniquement ne nécessite pas d'octets pour n'avoir que 8 bits. Ils pourraient avoir de plus en plus (il y a un CHAR_BIT constante dans <limits.h> IIRC).
  • Je l'ai changé pour sizeof(s). Merci
  • À l'aide de ?: dans le contexte vide est une abomination. Soit vous voulez if/else ou si vous souhaitez facteur de la chose: strcat(binary, (*ptr & 1 << i) ? "1" : "0");
  • Seuls les caractères ASCII 8 bits, vous devriez vraiment utiliser l'UTF8 . Dans le monde Unix, presque tout ce que suppose l'UTF8. Bonne lecture: utf8everywhere.org
  • Quoi? ASCII 7 bits.
  • Avez-vous une question?
  • Allez, vraiment? Comment avez-vous allouer 7 bits? Aussi, ASCII étendu a été autour depuis des décennies.
  • extended" n'est pas une chose. Il existe plusieurs extensions de l'ASCII (UTF-8), qui sont mutuellement incompatibles. Tout ce qui n'est pas pertinent parce que le C n'a pas de spécifier ASCII de toute façon.
  • Double Possible de Imprimer un int en représentation binaire à l'aide de C
  • Attendez, est-ce censé retourner l'ascii représentation binaire de la chaîne?
  • Double Possible de la Conversion de Char Binaire en C

InformationsquelleAutor Berkin | 2016-12-29