C++ C++;将Graphicsmagick中颜色的整数转换为十六进制字符串

C++ C++;将Graphicsmagick中颜色的整数转换为十六进制字符串,c++,colors,hex,graphicsmagick,C++,Colors,Hex,Graphicsmagick,如何将0到255之间的整数转换为正好包含两个字符的字符串,其中包含数字的十六进制表示形式 范例 输入:180 产出:“B4” 我的目标是在Graphicsmagick中设置灰度颜色。因此,以相同的示例为例,我希望得到以下最终输出: “#B4” 这样我就可以用它来指定颜色:color(#b4”) 应该很简单,对吧?使用printf使用%x格式说明符。或者,strtol将基数指定为16 #include<cstdio> int main() { int a = 180;

如何将0到255之间的整数转换为正好包含两个字符的字符串,其中包含数字的十六进制表示形式

范例

输入:180 产出:“B4”

我的目标是在Graphicsmagick中设置灰度颜色。因此,以相同的示例为例,我希望得到以下最终输出:

“#B4”

这样我就可以用它来指定颜色:color(#b4”)


应该很简单,对吧?

使用
printf
使用
%x
格式说明符。或者,
strtol
将基数指定为16

#include<cstdio>

int main()
{

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

    return 0;
}
#包括
int main()
{
INTA=180;
printf(“%x\n”,a);
返回0;
}

<代码> > p>您可以使用C++标准库的IOFSUSTER部分的本机格式特性,如:

#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); 
}
#包括
#包括
#包括
#包括
#包括
std::string getHexCode(无符号字符c){
//不一定是最有效的方法,
//每次创建一个新的stringstream。
//不过可以。
std::stringstream-ss;
//设置流模式

ss你不需要。这是一个更简单的方法:

ColorRGB(red/255., green/255., blue/255.)

如果你坚持使用旧式C功能,包括<代码> CSTDIO < /COD> >不>代码> STDIO。H/COD> > @ TMALALK GEET'KAL:当我同意CSTDIO注释(我也做了更改)时,我认为使用C++中的遗留C功能没有什么错。(尽管我认为使用它和推荐它是有区别的。:P)@ TaMalk Geel'Kal:如果使用不坏推荐不坏,几乎没有。只是因为有经验的C++程序员知道他在做什么来安全地使用这个奇数的遗留C,并不意味着鼓励初学者做这件事是明智的。有点像我使用CPLUS PLUS网站作为我的经验,因为我有经验。足够发现错误;一百万年后我不会将其作为资源推荐给任何不是的人。我还有一个问题,如何设置此颜色的透明度?@Alp:请参阅您正在使用的库的。我不知道如何使用ColorRGB类并将alpha通道设置为自定义值。我尝试了:
color-color=ColorRGB(R,G,B);color.alpha(.5);
但它似乎不起作用,仍然没有不透明度。@Alp:这就是它应该起作用的方式。如果不起作用,则表示问题出在其他地方(可能是在您使用颜色的时候)。