Как я могу преобразовать целое число в шестнадцатеричную строку в C?

Я не уверен, что это pythonic, но, похоже, работает

def alternate_list(a):
   return a[::2], a[1::2]

key_list,value_list = alternate_list(a)
b = dict(zip(key_list,value_list))
28
задан AppleDash 23 November 2015 в 19:11
поделиться

4 ответа

Этот код

int a = 5;
printf("%x\n", a);

печатает

5

Этот код

int a = 5; 
printf("0x%x\n", a);

печатает

0x5

Этот код

int a = 89778116;
printf("%x\n", a);

печатает

559e7c4

Если вы вводите заглавную букву x в формате, то заглавным становится шестнадцатеричное значение:

int a = 89778116;
printf("%X\n", a);

печатается

559E7C4

Если вы хотите напечатать указатели, вы используете спецификатор формата p:

char* str = "foo";
printf("0x%p\n", str);

печатает

0x01275744
37
ответ дан C Johnson 23 November 2015 в 19:11
поделиться

Следующий код принимает целое число и делает из него строку в шестнадцатеричном формате:

int  num = 32424;
char hex[5];

sprintf(hex, "%x", num);
puts(hex);

дает

7ea8
17
ответ дан Pithikos 23 November 2015 в 19:11
поделиться

Я сделал библиотеку, чтобы сделать шестнадцатеричное / десятичное преобразование без использования stdio.h. Очень прост в использовании:

char* dechex (int dec);

. Он будет использовать calloc() для возврата указателя на шестнадцатеричную строку, таким образом, количество используемой памяти оптимизируется, поэтому не забывайте использовать free()

Здесь ссылка на github: https://github.com/kevmuret/libhex/

3
ответ дан kevmuret 23 November 2015 в 19:11
поделиться

Обычно с printf (или одним из его кузенов) с использованием Спецификатор формата% x .

18
ответ дан 27 November 2019 в 17:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: