use*_*743 0 c c++ hex type-conversion
我只想知道如何将char(byte)中包含的十六进制值转换为整数.我想从.bmp文件转换颜色缓冲区,当然是十六进制文件并将其转换为整数.
例如 :
char rgb_hexa[3] = {0xA8, 0xF4, 0xD3};
Run Code Online (Sandbox Code Playgroud)
转换后:
int rgb_int[3] = {168, 244, 211};
Run Code Online (Sandbox Code Playgroud)
我总是尝试使用strtol,但它似乎只适用于char*.我试着做以下测试,但它不起作用:
char src_hexa_red = 0xA8;
char src_hexa_green = 0xF4;
char src_hexa_blue = 0xD3;
std::cout << "R=" << strtol(&src_hexa_red, (char**)NULL, 16) << ", G="
<< strtol(&src_hexa_green, (char**)NULL, 16) << ", B="
<< strtol(&src_hexa_blue, (char**)NULL, 16) << std::endl;
Run Code Online (Sandbox Code Playgroud)
有人能帮帮我吗?在此先感谢您的帮助.
单个char从不包含十六进制.就此而言,也不是小数.严格来说,a char包含一个整
数值 ; C++标准要求它使用值的二进制表示.该值可以解释为一个字符,但情况并非总是如此; 存在直接使用积分值的上下文.
十六进制和十进制只是以文本格式表示值的方式.它们在处理文本时只有意义.