Я хочу преобразовать unsigned char в hex (используя unsigned int). Это мой код до сих пор. У меня есть program1, который создает массив unsigned char, а другой program2 принимает только hex (используя unsigned int), поэтому я хочу получить вход беззнакового массива char и преобразовать этот массив в hex.
(например, program1 выходы "1234567812345678", program2 должен вывести "31323334353637383132333435363738")
К сожалению, если этот вопрос кажется немой. Посмотрел на ответы здесь, но, похоже, это не то, что я хотел.Преобразование массива unsigned char в шестнадцатеричный
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;
}
[Не отвергни результат 'malloc' в С] (http://stackoverflow.com/q/605845/995714) –
' 0x1234567812345678' в шестнадцатеричном является 'в десятичной системе 1311768465173141112'. Я не знаю, где вы получите '31323334353637383132333435363738'. Может быть, вы хотите преобразовать двоичные данные в шестнадцатеричное представление строк? –
@BarmakShemirani Я хочу преобразовать 1234567812345678 (десятичный) в шестнадцатеричный, который есть 31323334353637383132333435363738. – vivola