C ++ преобразовать целое число в шестнадцатеричную строку для цвета в Graphicsmagick - PullRequest
1 голос
/ 21 мая 2011

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

Пример

вход: 180 выход: "B4"

Моя цель - установить цвет в градациях серого в Graphicsmagick. Итак, взяв тот же пример, я хочу следующий конечный результат:

"# B4B4B4"

чтобы я мог использовать его для назначения цвета: Color ("# B4B4B4");

Должно быть легко, правда?

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

Вам не нужно.Это более простой способ:

ColorRGB(red/255., green/255., blue/255.)
1 голос
/ 21 мая 2011

Вы можете использовать встроенные функции форматирования части IOStreams стандартной библиотеки C ++, например:

#include <string>
#include <sstream>
#include <iostream>
#include <ios>
#include <iomanip>

std::string getHexCode(unsigned char c) {

   // Not necessarily the most efficient approach,
   // creating a new stringstream each time.
   // It'll do, though.
   std::stringstream ss;

   // Set stream modes
   ss << std::uppercase << std::setw(2) << std::setfill('0') << std::hex;

   // Stream in the character's ASCII code
   // (using `+` for promotion to `int`)
   ss << +c;

   // Return resultant string content
   return ss.str();
}

int main() {
   // Output: "B4, 04"
   std::cout << getHexCode(180) << ", " << getHexCode(4); 
}

Живой пример.

0 голосов
/ 21 мая 2011

Использование printf с использованием спецификатора формата %x.В качестве альтернативы strtol, указав основание как 16.

#include<cstdio>

int main()
{

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

    return 0;
}
...