Ich möchte vorzeichenlosen Zeichen in Hex konvertieren (using unsigned int). Das ist bisher mein Code. Ich habe ein Programm1, das ein vorzeichenloses char-Array erzeugt, und das andere Programm2 nimmt nur hex auf (mit unsigned int), also möchte ich eine Eingabe eines unsignierten char-Arrays bekommen und dieses Array in hex konvertieren.
(Z. B. program1 Ausgänge "1234567812345678", program2 ausgeben sollte "31323334353637383132333435363738")
Sorry, wenn diese Frage dumm scheint. Ich suchte hier nach Antworten, aber es schien nicht das zu sein, was ich wollte.Konvertieren von unsigned Char-Array zu Hexadezimal
uint64_t phex (unsigned char[16], long);
int main (void) {
int i;
unsigned char key[16] = "1234567812345678";
uint64_t* keyHex = phex(key,16); //store into an array here
for(i = 0; i < 16; i++)
printf("%.2x ", keyHex[i]);
free(keyHex);
return 0;
}
uint64_t phex(unsigned char* string, long len)
{
int i;
//allocate memory for your array
uint64_t* hex = (uint64_t*)malloc(sizeof(uint64_t) * len);
for(i = 0; i < len; ++i) {
//do char to int conversion on every element of char array
hex[i] = string[i] - '0';
}
//return integer array
return hex;
}
[Verwirf das Ergebnis nicht von 'malloc' in C] (http://stackoverflow.com/q/605845/995714) –
' 0x1234567812345678' in hexadezimal ist '1311768465173141112' in dezimal. Ich weiß nicht, wo Sie '31323334353637383132333435363738' bekommen. Vielleicht möchten Sie Binärdaten in hexadezimale Zeichenfolgendarstellungen konvertieren? –
@BarmakShemirani ich möchte 1234567812345678 (dezimal) in hexadezimal konvertieren, das ist 31323334353637383132333435363738. – vivola