大家好,欢迎来到IT知识分享网。
颜色值进制转换
专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码,就会用到这两种颜色值的转换。基础的方法是十进制转十六进制,反过来十六进制转十进制二种方法。颜色值是分3段来转换的,若是aRGB格式分4段。
每段只需要 0-255 <转换> 00 - ff。
颜色值表达格式:
hex = 0xff7dff RGB=(255,125,255)
hex = # ff7dff RGB=(255,125,255)
aHex = 0xff7d7dff aRGB=(255,125,125,255)
今写了二个进制转换函数:
十进制转十六进制 dec2hex ()
十六进制转十进制 hex2dec ()
以及二个颜色值转换函数:
十六进制颜色值转RGB(r, g, b) :hex2RGB ()
RGB颜色值转为十六进制颜色值:RGB2hex ()
hex2RGB (){ //十六进制颜色值转RGB(r, g, b)
//输入十六进制颜色值转换为十进制RGB格式颜色值
//例: color$=”0xffe992″ ; 格式输入颜色值字串
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″ ; //格式输入颜色值字串
hex2RGB () ;
color$=”0x007d7d” ; //格式输入颜色值字串
hex2RGB () ;
color$=”0x00abff” ; //格式输入颜色值字串
hex2RGB () ;
//反转 >
print “反转 > ” ;
RGB2hex ();
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 $
string hx$ ;
hx$=”0ABCDEF” ;
hex=””; //init 输出串
DecToHex :
// do calculate until dec=0, return hex
k=dec-dec/16*16 ; //k=dec Mod 16, k=dec % 16
dec=dec/16 ; //整除,dec\16
hex=subString (hx$, k,1)+hex ;
if (dec>0) goto DecToHex ;
//return string hex
}//dec2hex ()
hex2dec (){
//传入十六进制数转换为十进制数
//传入 string get$ 输出 int dec
nlen=len (get$); //字串长度
dec=0 ; //init 置初值 0
//开始计算 >
for (i=0; i<nlen; i++){
a$=subString (get$, i, 1);
//字符串转为数值的方法很多,我采用最简单直观的写法,字母大小写都可以。
if (a$==”0″) k=0 ;
if (a$==”1″) k=1 ;
if (a$==”2″) k=2 ;
if (a$==”3″) k=3 ;
if (a$==”4″) k=4 ;
if (a$==”5″) k=5 ;
if (a$==”6″) k=6 ;
if (a$==”7″) k=7 ;
if (a$==”8″) k=8 ;
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://haidsoft.com/142894.html