<p>颜色值进制转换<br /> 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码,就会用到这两种颜色值的转换。基础的方法是十进制转十六进制,反过来十六进制转十进制二种方法。颜色值是分3段来转换的,若是aRGB格式分4段。<br /> 每段只需要 0-255 <转换> 00 - ff。<br /> 颜色值表达格式:<br /> hex = 0xff7dff RGB=(255,125,255)<br /> hex = # ff7dff RGB=(255,125,255)<br /> aHex = 0xff7d7dff aRGB=(255,125,125,255)</p>
讯享网
今写了二个进制转换函数:
十进制转十六进制 dec2hex ()
十六进制转十进制 hex2dec ()
以及二个颜色值转换函数:
十六进制颜色值转RGB(r, g, b) :hex2RGB ()
RGB颜色值转为十六进制颜色值:RGB2hex ()

hex2RGB (){ //十六进制颜色值转RGB(r, g, b)
//输入十六进制颜色值转换为十进制RGB格式颜色值
//例: color\(="0xffe992" ; 格式输入颜色值字串</p> <p> print "颜色值字串 = ",color\) ;
get\(=subString (color\), 2, 2);
hex2dec () ;
R=dec ;
get\(=subString (color\), 4, 2);
hex2dec () ;
G=dec ;
get\(=subString (color\), 6, 2);
hex2dec () ;
B=dec ;
print “RGB = ”, “( ”,R,“ , ”,G,“ , ”,B,“ )” ; //输出
print “ ” ;
}//hex2RGB ()
test (){ //测试十六进制颜色值转换
//十六进制颜色值转为RGB
clearOutput ();
color\(="0xffe992" ; //格式输入颜色值字串<br /> hex2RGB () ;<br /> color\)=“0x007d7d” ; //格式输入颜色值字串
hex2RGB () ;
color\(="0x00abff" ; //格式输入颜色值字串<br /> hex2RGB () ;<br /> //反转 > <br /> print "反转 > " ;<br /> RGB2hex ();<br /> color\)=“0x807aff” ; //格式输入颜色值字串
hex2RGB () ;
//反转 >
print “反转 > ” ;
RGB2hex ();
}//test ()
RGB2hex (){
//RGB颜色值转为十六进制颜色值
string ss, ss1, ss2, ss3 ;
//传入 R=255 ; G=128 ; B=128 ;
// dec To hex and show hex
dec=R ; dec2hex() ; ss1=hex ;
dec=G ; dec2hex() ; ss2=hex ;
dec=B ; dec2hex() ; ss3=hex ;
ss=“0x”+ss1+ss2+ss3 ;
print “RGB = ”, “( ”,R,“ , ”,G,“ , ”,B ,“ )” ;
print “十六进制颜色值 = ”, ss ;
print “ ”;
}//RGB2hex ()
test16 (){ //测试RGB转换十六进制颜色值
clearOutput ();
R=255 ; G=128 ; B=128 ;
RGB2hex ();
R=55 ; G=98 ; B=255 ;
RGB2hex ();
R=155 ; G=255 ; B=25 ;
RGB2hex ();
R=255 ; G=233 ; B=146 ;
RGB2hex ();

}//test16 ()

//二个函数:
//十进制转十六进制 dec2hex ()
//十六进制转十进制 hex2dec ()
dec2hex (){
//十进制非负整数int dec 转为十六进制值 hex \(<br /> string hx\) ;
hx\(="0ABCDEF" ;<br /> hex=""; //init 输出串</p> <p> DecToHex :<br /> // do calculate until dec=0, return hex<br /> k=dec-dec/16*16 ; //k=dec Mod 16, k=dec % 16<br /> dec=dec/16 ; //整除,dec16<br /> hex=subString (hx\), k,1)+hex ;
if (dec>0) goto DecToHex ;
//return string hex
}//dec2hex ()
hex2dec (){
//传入十六进制数转换为十进制数
//传入 string get\( 输出 int dec <br /> nlen=len (get\)); //字串长度
dec=0 ; //init 置初值 0
//开始计算 >
for (i=0; i<nlen; i++){
a\(=subString (get\), i, 1);
//字符串转为数值的方法很多,我采用最简单直观的写法,字母大小写都可以。
if (a\(=="0") k=0 ;<br /> if (a\)==“1”) k=1 ;
if (a\(=="2") k=2 ;<br /> if (a\)==“3”) k=3 ;
if (a\(=="4") k=4 ;<br /> if (a\)==“5”) k=5 ;
if (a\(=="6") k=6 ;<br /> if (a\)==“7”) k=7 ;
if (a\(=="8") k=8 ;<br /> if (a\)==“9”) k=9 ;
if (a\(=="A"||a\)==“a”) k=10 ;
if (a\(=="B"||a\)==“b”) k=11 ;
if (a\(=="C"||a\)==“c”) k=12 ;
if (a\(=="D"||a\)==“d”) k=13 ;
if (a\(=="E"||a\)==“e”) k=14 ;
if (a\(=="F"||a\)==“f”) k=15 ;
kn=nlen-i-1 ; //高权位起降幂计算
dec=dec+(int)(k*pow(16,kn)) ; //乘方累加
} // return dec
}//hex2dec ()
// End

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193047.html