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?

È stato utile?

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); 
}
.

esempio dal vivo.

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;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top