C ++ convertire Integer su Stringa Hex per il colore in graficaMagick
-
08-09-2020 - |
Domanda
Come posso convertire un numero intero compreso tra 0 e 255 a una stringa con esattamente due caratteri, contando la rappresentazione esadecimale del numero?
Esempio
Input: 180 Uscita: "B4"
Il mio obiettivo è impostare il colore in scala di grigi in graficaMagick.Quindi, prendendo lo stesso esempio voglio la seguente uscita finale:
"# B4b4b4"
In modo che io possa usarlo per l'assegnazione del colore: Colore ("# B4B4b4");
dovrebbe essere facile, giusto?
Soluzione
Non è necessario.Questo è un modo più semplice:
ColorRGB(red/255., green/255., blue/255.)
. Altri suggerimenti
È possibile utilizzare le funzionalità di formattazione nativa della parte iOSTREAMS della libreria standard C ++, come questa:
#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);
}
.
Utilizzo di printf
utilizzando il formato %x
Specificatore.In alternativa, strtol
che specifica la base come 16.
#include<cstdio>
int main()
{
int a = 180;
printf("%x\n", a);
return 0;
}
.