2016-12-30 6 views
-3

im Versuch, eine Zeichenfolge Nachricht an Hex-Wert in C.Unsigned Char Concat In C

Zum Beispiel zu konvertieren, wenn ich eine Meldung wie „abc“ habe ich will es hat von 162.636 usw. Mein Code ist unten. In diesem Code muss ich einige concat Operation tun, um sie alle zu speichern, aber jetzt kann ich nur 36 speichern. Wie kann ich sie speichern?

unsigned char swapNibbles(char x) 
{ 
    return ((x & 0x0F)<<4 | (x & 0xF0)>>4); 
} 

void encode(char *message, char password[40]) { 
    unsigned char *reversedInput = malloc(strlen(message)); 


    for (int i = 0; i < strlen(message); ++i) { 
     reversedInput=swapNibbles(message[i]); 
    } 
    printf("%2x TERS ",reversedInput); 
    //unsigned char *bitwiseMessage = (unsigned char*)message; 
    //printf("DÜZ %s\n",bitwiseMessage); 
    //printf("TERS %u\n", swapNibbles(bitwiseMessage)); 
} 
+1

Diese Antwort bieten eine Möglichkeit, das zu tun, http://stackoverflow.com/a/41356195/7076153 – Stargateur

+5

[Bitte lesen Sie die Diskussion darüber, warum der Rückgabewert von 'malloc()' und die Familie in 'C' nicht umgewandelt werden soll.] (Http://stackoverflow.com/q/605845/2173917). –

+0

@SouravGhosh, wenn ich es nicht werfen, werde ich segmentation Fehler bekommen – Berkin

Antwort

1

bearbeiten

Meine Lösung für Hex-Codierung: IDEOne


Wenn Sie Ihren Text wollen hex-codiert zu sein, müssen Sie zuzuteilen zweimal so viel Platz wie die ursprüngliche Nachricht:

"abc" (3 bytes) ==> "616263" (6 bytes) 

So benötigen Sie:

unsigned char *reversedInput = malloc(2*strlen(message)+1); // +1 for the final NULL-terminator 

#include <string.h> 
#include <malloc.h> 

char* HexEncode(char* txt) 
{ 
    char* hexTxt = calloc(2*strlen(txt)+1,1); 
    for(char* p=hexTxt; *txt; p+=2) 
    { 
     sprintf(p, "%02x", *txt++); 
    } 
    return hexTxt; 
} 

int main() { 
    char* hexText = HexEncode("Hello World"); 
    printf("Hexed is %s\n", hexText); 
    free(hexText); 

    return 0; 
} 

Ausgabe

Hexed is 48656c6c6f20576f726c64 
+0

Danke :) Ich chaned es – Berkin

+0

Hinweis: Wenn der Zweck ist, Lager-Zeichen 'reversedInput' sollte vom Typ' char * 'sein. – Stargateur

+0

Danke, dass du mir geholfen hast. Danke viel :) Das ist, was ich brauchte – Berkin