Как преобразовать десятичные литералы в шестнадцатеричные в C, 500 до 0x0500 - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть следующее: int num = 500;текст char [8];

как мне сделать так, чтобы текст заканчивался шестнадцатеричным 0x500 или 1280?

edit: я вижу, что довольно просто сделать текст, как в некоторых ответах.Но мне нужно, чтобы этот текст интерпретировался C. как шестнадцатеричный гекс. Так что в действительности это должен быть гекс без знака int.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

В K & R есть упражнение, вторая глава, если я не ошибаюсь, которое просит сделать именно это.Если у вас возникли трудности, я предлагаю вам посмотреть шестнадцатеричную арифметику в Википедии.

1 голос
/ 16 сентября 2011

Это должно сделать это.

int num = 500;
char text[8];
sprintf(text, "0x%d", num); // puts "0x500" in text

Предполагается, что вы намеренно не конвертировали num в шестнадцатеричное, если это не было специально, это создает text с целым числом, преобразованным в шестнадцатеричное:

int num = 500;
char text[8];
sprintf(text, "0x%X", num); // puts "0x1F4" in text
...