当 进制之间的转换结果需要处理时,转来转去就显得比较繁杂,在此有一技巧。
问题: 输入 四个 0-255 之间的 ints, 分别代表 ARGB(16进制), 输出 一个 int 值
逻辑:分别将 这四个值 转化成 16进制 的字符,再将 它们 连接成一个字符,然后转化成 一个 int 值。
首先 申明 如下 结构:
union tt
{
struct
{
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
};
unsigned int data;
};
使用:
tt t;
t.a = 0;
t.r = 255;
t.g = 192;
t.b = 255; // 0,255,192,255 分别 是输入的 int 值.
CValue = t.data; //这就是最终结果...
传统方法:
//CString aStr;
//aStr.Format("%x", 0);
//CString rStr;
//rStr.Format("%x", 255);
//CString gStr;
//gStr.Format("%x", 192);
//CString bStr;
//bStr.Format("%x", 255);
//CString resultStr("");
//resultStr = aStr + rStr +gStr +bStr;
//CValue = _tcstol(resultStr, NULL, 16);