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

发布于 2024-11-08 12:37:26 字数 226 浏览 5 评论 0原文

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

输入示例

:180 输出:“B4”

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

“#B4B4B4”

,以便我可以使用它来分配颜色:Color(“#B4B4B4”);

应该很容易吧?

How can i convert an integer ranging from 0 to 255 to a string with exactly two chars, containg the hexadecimal representation of the number?

Example

input: 180
output: "B4"

My goal is to set the grayscale color in Graphicsmagick. So, taking the same example i want the following final output:

"#B4B4B4"

so that i can use it for assigning the color: Color("#B4B4B4");

Should be easy, right?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

眼泪淡了忧伤 2024-11-15 12:37:26

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

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

You don't need to. This is an easier way:

ColorRGB(red/255., green/255., blue/255.)
心如荒岛 2024-11-15 12:37:26

您可以使用 C++ 标准库的 IOStreams 部分的本机格式化功能,如下所示:

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

实时示例。

You can use the native formatting features of the IOStreams part of the C++ Standard Library, like this:

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

Live example.

忘你却要生生世世 2024-11-15 12:37:26

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

#include<cstdio>

int main()
{

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

    return 0;
}

Using printf using the %x format specifier. Alternatively, strtol specifying the base as 16.

#include<cstdio>

int main()
{

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

    return 0;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文