颜色值进制转换

颜色值进制转换
专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值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 ()

004516e045324e72ab1cb572017b1cd9.png

6663429c6efc4e0dbcb1519cf56dbeac.png 

4ac7aae51d1f4b229e77ef5e23936cb6.png 

 

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 ()

72c71713a4f540e5825f374d15ca8621.png

c5f30f62ead54f5f9cb4f68eb06a5861.png  

//二个函数:
//十进制转十六进制 dec2hex ()
//十六进制转十进制 hex2dec ()

dec2hex (){    
//十进制非负整数int dec 转为十六进制值 hex $
 string hx$ ;
  hx$="0123456789ABCDEF" ;
        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 ****

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值